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
————————————————
版权声明:本文为CSDN博主「bug_yun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bug_yun/article/details/84749197