下面我建兩個表,并執(zhí)行一系列sql語句,仔細(xì)觀察sql執(zhí)行后表中數(shù)據(jù)的變化,很容易就能理解多表聯(lián)合更新的用法
student表 class表
![](/d/20211018/d49a5c5dc71a9eae584dcb8a5b1b4e64.gif)
1. 執(zhí)行 UPDATE student s , class c SET s.class_name='test00',c.stu_name='test00' WHERE s.class_id = c.id
student表 class表
![](/d/20211018/7241c41b716db90dbc448fedb6072897.gif)
2. 執(zhí)行 UPDATE student s JOIN class c ON s.class_id = c.id SET s.class_name='test11',c.stu_name='test11'
student表 class表
![](/d/20211018/66f4ee5ca092852e02859c37f0b8732d.gif)
3. 執(zhí)行 UPDATE student s LEFT JOIN class c ON s.class_id = c.id SET s.class_name='test22',c.stu_name='test22'
student表 class表
![](/d/20211018/88bb832b9de7fbf6fec9d42abd8bc254.gif)
4. 執(zhí)行 UPDATE student s RIGHT JOIN class c ON s.class_id = c.id SET s.class_name='test33',c.stu_name='test33'
student表 class表
![](/d/20211018/e608a33e93d1cea5782968b3a281b877.gif)
5. 執(zhí)行 UPDATE student s JOIN class c ON s.class_id = c.id SET s.class_name=c.name , c.stu_name=s.name
student表 class表
![](/d/20211018/84be2188c26e230c49fe31d704325c45.gif)
知識點(diǎn)補(bǔ)充:
mysql多表關(guān)聯(lián)update
日常的開發(fā)中一般都是寫的單表update語句,很少寫多表關(guān)聯(lián)的update。
不同于SQL Server,在MySQL中,update的多表連接更新和select的多表連接查詢在使用的方法上存在一些小差異。
來看一個具體的例子。
update orders o
left join users u
on o.userId = u.id
set o.userName = u.name;
在上面的例子中,update關(guān)鍵字后跟的是一個多表關(guān)聯(lián)的結(jié)果集,MySQL直接將這個多表關(guān)聯(lián)的結(jié)果集看做一個單表,再在這個單表的基礎(chǔ)上做常規(guī)的update操作。
和SQL Server的細(xì)小差別在于,SQL Server的set子句跟在要更新的具體表之后,MySQL的set語句則是跟在要更新的結(jié)果集之后(要更新的具體表在set語句中設(shè)置)。
總結(jié)
到此這篇關(guān)于Mysql update多表聯(lián)合更新的方法小結(jié)的文章就介紹到這了,更多相關(guān)mysql update多表聯(lián)合更新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 實(shí)操M(fèi)ySQL+PostgreSQL批量插入更新insertOrUpdate
- MySQL update set 和 and的區(qū)別
- MySQL UPDATE 語句的非標(biāo)準(zhǔn)實(shí)現(xiàn)代碼
- mysql update case 更新字段值不固定的操作
- mysql事務(wù)select for update及數(shù)據(jù)的一致性處理講解
- MySQL UPDATE 語句一個“經(jīng)典”的坑