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

版权声明:本文为jameswohu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jameswohu/p/14676758.html