mysql - 使用update語句同時更新兩個表的問題?
問題描述
先貼sql: update class ,student set class.class_id = ’2011’,student.class_id = class.class_id where class_name = ’一班’;
我的需求是將class表中一班的id修改為2011,然后將student表中所有的學(xué)生的班級id都更新。但是上面的sql的執(zhí)行結(jié)果是先執(zhí)行student.class_id = class.class_id ,然后再執(zhí)行class.class_id = ’2011’
一開始我以為是賦值語句順序的問題,于是我把兩個賦值語句調(diào)換了順序,發(fā)現(xiàn)效果還是不變。。。為什么呢?正確的寫法是什么呢?
問題解答
回答1:如果我沒記錯的話,標(biāo)準(zhǔn)里規(guī)定更新順序是從左到右,變量優(yōu)先。但是標(biāo)準(zhǔn)規(guī)定是一回事,DBMS 有沒有嚴(yán)格遵守標(biāo)準(zhǔn)又是另一回事,不同的 DBMS 可能出來結(jié)果不一樣。只有查了你用的 DBMS 的文檔才能知道到底是什么情況。
保險的做法就是寫兩條 update,其實(shí)效率應(yīng)該是非常接近的。
回答2:update class ,student set class.class_id = ’2011’,student.class_id = class.class_id where `class`.class_name = ’一班’ && `student`.class_name= ’一班’
相關(guān)文章:
1. python - 數(shù)據(jù)與循環(huán)次數(shù)對應(yīng)不上2. mysql - 把一個表中的數(shù)據(jù)count更新到另一個表里?3. 請教使用PDO連接MSSQL數(shù)據(jù)庫插入是亂碼問題?4. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處5. Python爬蟲如何爬取span和span中間的內(nèi)容并分別存入字典里?6. 視頻文件不能播放,怎么辦?7. mysql 查詢身份證號字段值有效的數(shù)據(jù)8. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題9. node.js - nodejs開發(fā)中常用的連接mysql的庫10. 黑客 - Python模塊安全權(quán)限
