單表更新
UPDATE table_name SET field1=new-value1, field2=new-value2 WHERE field=value
多表更新
情況一:
UPDATE userA as a , userB as b SET a.num = b.num*0.5 WHERE a.id = b.uid AND a.deleted_at is null;
UPDATE userA as a INNER JOIN userB as b ON a.id = b.uid SET a.num = b.num*0.5 WHERE AND a.deleted_at is null;
情況二:
UPDATE userA as a INNER JOIN userB as b ON a.id = b.uid SET a.num = b.num*0.5,a.state = 1 WHERE a.id = b.id
AND a.deleted_at is null
AND (
b.gb_name = 'a'
OR b.gb_name = 'b'
OR b.gb_name = 'c'
OR b.gb_name = 'd'
OR b.gb_name = 'e'
OR b.gb_name = 'f'
OR b.gb_name = 'g'
);
擴展:
inner join和where區別:
1 WHERE子句中使用的連接語句,在數據庫語言中,被稱爲隱性連接。INNER JOIN……ON子句產生的連接稱爲顯性連接。(其他JOIN參數也是顯性連接)WHERE和INNER JOIN產生的連接關係,沒有本質區別,結果也一樣。但是!隱性連接隨着數據庫語言的規範和發展,已經逐漸被淘汰,比較新的數據庫語言基本上已經拋棄了隱性連接,全部採用顯性連接了。
2,測試結果inner join效率更快
事例:
Inner jion 原理:
SELECT
*
FROM
A
INNER JOIN B ON B.ID = A.ID
AND B.State = 1
INNER JOIN C ON B.ID = C.ID
where 原理:
SELECT
*
FROM
A
INNER JOIN B ON B.ID = A.ID
INNER JOIN C ON B.ID = C.ID
WHERE
B.State = 1
INNER JOIN時會產生一個結果集,WHERE條件在這個結果集中再根據條件進行過濾。