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

 

————————————————
版權聲明:本文為CSDN博主「bug_yun」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bug_yun/article/details/84749197


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM