下面我建兩個(gè)表,并執(zhí)行一系列sql語(yǔ)句,仔細(xì)觀(guān)察sql執(zhí)行后表中數(shù)據(jù)的變化,很容易就能理解多表聯(lián)合更新的用法
student表 class表

1. 執(zhí)行 UPDATE student s , class c SET s.class_name='test00',c.stu_name='test00' WHERE s.class_id = c.id
student表 class表

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表

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表

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表

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表

知識(shí)點(diǎn)補(bǔ)充:
mysql多表關(guān)聯(lián)update
日常的開(kāi)發(fā)中一般都是寫(xiě)的單表update語(yǔ)句,很少寫(xiě)多表關(guān)聯(lián)的update。
不同于SQL Server,在MySQL中,update的多表連接更新和select的多表連接查詢(xún)?cè)谑褂玫姆椒ㄉ洗嬖谝恍┬〔町悺?/p>
來(lái)看一個(gè)具體的例子。
update orders o left join users u on o.userId = u.idset o.userName = u.name;
在上面的例子中,update關(guān)鍵字后跟的是一個(gè)多表關(guān)聯(lián)的結(jié)果集,MySQL直接將這個(gè)多表關(guān)聯(lián)的結(jié)果集看做一個(gè)單表,再在這個(gè)單表的基礎(chǔ)上做常規(guī)的update操作。
和SQL Server的細(xì)小差別在于,SQL Server的set子句跟在要更新的具體表之后,MySQL的set語(yǔ)句則是跟在要更新的結(jié)果集之后(要更新的具體表在set語(yǔ)句中設(shè)置)。
總結(jié)
新聞熱點(diǎn)
疑難解答
圖片精選