问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql中一个update语句如何去写

发布网友 发布时间:2022-04-23 13:51

我来回答

4个回答

热心网友 时间:2022-04-10 14:58

首先,单表的UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
其次,多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。
如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。
LIMIT子句用于给定一个限值,*可以被更新的行的数目。
UPDATE语句支持以下修饰符:
1,如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。
2,如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。
如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。
如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。
例如,把年龄列设置为比当前值多一:

代码如下:
mysql> UPDATE persondata SET age=age+1;

UPDATE赋值被从左到右评估。

例如,对年龄列加倍,然后再进行增加:

代码如下:
mysql> UPDATE persondata SET age=age*2, age=age+1;

如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。

如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。
对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“zero”值。
UPDATE会返回实际被改变的行的数目。Mysql_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。
您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。
只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。
如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。
您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。
例子:

代码如下:

SQL>UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

说明:以上代码显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。
注释:不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。
在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。
如果您使用的multiple-table UPDATE语句中包含带有外键*的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。
在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。
该功能由InnoDB提供,用于对其它表进行相应的修改。
目前,不能在一个子查询中更新一个表,同时从同一个表中选择。
update语句的几种基本用法
A. 使用简单的 UPDATE
下列示例说明如果从 UPDATE 语句中去除 WHERE 子句,所有的行会受到什么影响。
下面这个例子说明,如果表 publishers 中的所有出版社将总部搬迁到佐治亚州的亚特兰大市,表 publishers 如何更新。

代码如下:

UPDATE publishers
SET city = 'Atlanta', state = 'GA'

本示例将所有出版商的名字变为 NULL。

复制代码 代码如下:

UPDATE publishers
SET pub_name = NULL

也可以在更新中使用计算值。本示例将表 titles 中的所有价格加倍。

代码如下:

UPDATE titles
SET price = price * 2

B.把 WHERE 子句和 UPDATE 语句一起使用
WHERE 子句指定要更新的行例如,在下面这个虚构的事件中,北加利福尼亚更名为 Pacifica(缩写为 PC),而奥克兰的市民投票决定将其城市的名字改为 Bay City。这个例子说明如何为奥克兰市以前的所有居民(他们的地址已经过时)更新表 authors。

代码如下:

UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'

必须编写另一个语句来更改北加利福尼亚其它城市的居民所在的州名。
C.通过 UPDATE 语句使用来自另一个表的信息
本示例修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。

复制代码 代码如下:

UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

这个例子假定,一种特定的商品在特定的日期只记录一批销售量,而且更新是最新的。如果不是这样(即如果一种特定的商品在同一天可以记录不止一批销售量),这里所示的例子将出错。例子可正确执行,但是每种商品只用一批销售量进行更新,而不管那一天实际销售了多少批。这是因为一个 UPDATE 语句从不会对同一行更新两次。
对于特定的商品在同一天可销售不止一批的情况,每种商品的所有销售量必须在 UPDATE 语句中合计在一起,如下例所示:

代码如下:

UPDATE titles
SET ytd_sales =
(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
FROM titles, sales

D. 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用
这个例子对来自表 authors 的前十个作者的 state 列进行更新。

代码如下:

UPDATE authors
SET state = 'ZZ'
FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS t1
WHERE authors.au_id = t1.au_id

以上就是mysql update语句用法的全部内容

热心网友 时间:2022-04-10 16:16

可以分成两句update语句来执行:
update table_name set sync_count=sync_count-100+30 where sync_count>100;
update table_name set sync_count=sync_count+30 where sync_count<100;

热心网友 时间:2022-04-10 17:51

update yourtablename set sync_count=(case when sync_count>100 then sync_count -100 + 30 else sync_count + 30 end)

热心网友 时间:2022-04-10 19:42

update 表名 set sync_count = if(sync_count > 100,sync_count -100 + 30, sync_count + 30);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
硅胶与液态硅胶手机壳的区别 什么样的过敏会传染 过敏的原理是什么?为什么有的人过敏,有的人不过敏?谢谢! 过敏为什么会痒 评审报告需要注意什么 财政评审流程及注意事项 高效项目评审的6大注意事项 银行双录 什么意思 什么是银行双录 在异地哪些可公证 圣安地列斯怎样提升肺活量? mysql 在update时候,set字段值是查询出来的.怎么set 《侠盗猎车:圣安地列斯》肺活量全满秘籍是什么? 圣安地列斯 有个任务叫水中奇袭 说叫我去潜水多锻炼肺活量我在水里试了几下才提升一点点怎么快速提升? 如何在mysql中实现update字段set字段=字段+字符, 如何在mysql中实现update字段set字段=字段+字符 华为nova5原装屏多少钱? 《圣安地列斯》肺活量怎么练? mysql的update语句,set后面如何跟变量? MySQL中INSERT,UPDATE和REPLACE的区别与用法 MYSQL数据库 更新表数据 SQL 中 数据更新 update 表名 set 原来的字符=新的字符 然后 where... 怎么学习MySQL?MySQL中update使用 SQL里面update set 的用法 mysql 函数里面update 一个华为nova5的,原装屏幕要多少钱? mysql中的update语句怎么写 怎样能使女人性欲高涨? 怎么样增加性快感? 做爱时怎么能更快的让她更兴奋. 如何用update语句 更新 某个字段,让字段值递增。。 侠盗圣安地列斯怎样才能增加肺活量? 数据库mysql update操作问题 ,求各位大侠讲解 圣安地列斯W点第四个任务,说要更多肺活量,我想问下要练多少时间游泳? MySql 更新update表中某一个字段记录 侠盗猎车手圣安地列斯任务水下奇袭中需要的水下锻炼是什么? MYSQL如何实时更新数据库的字段 Gtasa手机版怎么练肺活量 圣安地列斯游戏手里怎么提高肺活量? gtasa肺活量多少才能做W任务 如图,侠盗飞车手圣安地列斯,这个任务怎么过啊,我去游泳只增加肺活量 怎么眼前出现好多小白点在漂!是冒星星吗怎么回事哦! 眼睛近视最近老是看到白点在飞那是怎么了 最近眼前会不时有白点飘过,是不是得眼病了 为什么我看东西会有很多小白点飞来飞去还有很多不明物体飘来飘去 为什么白天看天空有无数白点飘啊!!! 眼睛眼睛为什么会突然眼前会有很多白点然 眼前有黑点白点在飞是怎么回事 眼睛看东西感觉眼前有许多密密麻麻的白点闪烁,看白墙和黑色地方特别明显,仔细看还有下小雨的感觉。网上 为什么打了喷嚏眼前有亮点飘来飘去