mysql更新代码_mysql update语句的用法

1.    单表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name

SET col_name1=expr1 [, col_name2=expr2 ...]

[WHERE where_definition]

[ORDER BY ...]

[LIMIT row_count]

2.    多表的UPDATE语句

UPDATE [LOW_PRIORITY] [IGNORE] table_references

SET col_name1=expr1 [, col_name2=expr2 ...]

[WHERE where_definition]

a.如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。

b.如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。

如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。

eg:

UPDATE beyond SET args1=args1+1

UPDATE赋值被从左到右评估

UPDATE beyond SET args1=args1*2,args1=args1+1

3. 使用简单的 UPDATE

UPDATE test.beyond b

SET b.args1 = '001', b.args2 = '002'

4. 把 WHERE 子句和 UPDATE 语句一起使用

UPDATE test.beyond b

SET b.args1 = '001', b.args2 = '002'

WHERE b.args1 = '11' AND b.args2 = '22'

5. 通过 UPDATE 语句使用来自另一个表的信息

UPDATE test.beyond b,test.clzss c

SET b.args1 = c.clzssId

WHERE b.args1 = c.userid;

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

6. 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用

UPDATE AUTHORS

SET state = 'ZZ'

FROM

(

SELECT

TOP 10 *

FROM

AUTHORS

ORDER BY

au_lname

) AS t1

WHERE

AUTHORS .au_id = t1.au_id


版权声明:本文为weixin_39734048原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。