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