UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col1=expr1 [, col2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col1=expr1 [, col2=expr2 ...]
[WHERE where_definition]
| 修飾符 | 行為 |
|---|---|
LOW_PRIORITY | 延遲執行,直到無其他客戶端讀取該表 |
IGNORE | 遇錯誤(如主鍵衝突、類型轉換溢出)不中斷,跳過該行 |
SET a=a*2, a=a+1 先乘後加;NOT NULL 列設為 NULL 會轉為類型默認值(數字 0、字符串 ''、日期零值)並產生警告。mysql_info() / ROW_COUNT() 可獲取匹配行、更新行、警告數。LIMIT N:匹配到 N 行即停止,無論是否改變;ORDER BY:按指定順序更新,常用於配合 LIMIT 實現「更新前 N 行」;UPDATE 權限,僅讀取列需 SELECT 權限;ON UPDATE CASCADE。當前版本不支持在子查詢中更新同一張表:UPDATE t SET ... WHERE id IN (SELECT ... FROM t) 會報錯。