下面我建兩個表,並執行一系列sql語句,仔細觀察sql執行後表中數據的變化,很容易就能理解多表聯合更新的用法
student表 class表
1. 執行 update student s , class c set s.class_name='test00',c.stu_name='test00' where s.class_id = c.id
student表 class表
2. 執行 update student s join class c on s.class_id = c.id set s.class_name='test11',c.stu_name='test11'
student表 class表
3. 執行 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. 執行 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. 執行 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表
知識點補充:
mysql多表關聯update
日常的開發中一般都是寫的單表update語句,很少寫多表關聯的update。
不同於sql server,在mysql中,update的多表連接更新和select的多表連接查詢在使用的方法上存在一些小差異。
來看一個具體的例子。
update orders o
left join users u
on o.userid = u.id
set o.username = u.name;
在上面的例子中,update關鍵字後跟的是一個多表關聯的結果集,mysql直接將這個多表關聯的結果集看做一個單表,再在這個單表的基礎上做常規的update操作。
和sql server的細小差別在於,sql server的set子句跟在要更新的具體表之後,mysql的set語句則是跟在要更新的結果集之後(要更新的具體表在set語句中設置)。
總結
到此這篇關於mysql update多表聯合更新的方法小結的文章就介紹到這了
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.