mysql - 使用update語(yǔ)句同時(shí)更新兩個(gè)表的問(wèn)題?
問(wèn)題描述
先貼sql: update class ,student set class.class_id = ’2011’,student.class_id = class.class_id where class_name = ’一班’;
我的需求是將class表中一班的id修改為2011,然后將student表中所有的學(xué)生的班級(jí)id都更新。但是上面的sql的執(zhí)行結(jié)果是先執(zhí)行student.class_id = class.class_id ,然后再執(zhí)行class.class_id = ’2011’
一開(kāi)始我以為是賦值語(yǔ)句順序的問(wèn)題,于是我把兩個(gè)賦值語(yǔ)句調(diào)換了順序,發(fā)現(xiàn)效果還是不變。。。為什么呢?正確的寫(xiě)法是什么呢?
問(wèn)題解答
回答1:如果我沒(méi)記錯(cuò)的話,標(biāo)準(zhǔn)里規(guī)定更新順序是從左到右,變量?jī)?yōu)先。但是標(biāo)準(zhǔn)規(guī)定是一回事,DBMS 有沒(méi)有嚴(yán)格遵守標(biāo)準(zhǔn)又是另一回事,不同的 DBMS 可能出來(lái)結(jié)果不一樣。只有查了你用的 DBMS 的文檔才能知道到底是什么情況。
保險(xiǎn)的做法就是寫(xiě)兩條 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 - django models 為生成的html元素添加樣式。2. css - chrome下a標(biāo)簽嵌套img 顯示會(huì)多個(gè)小箭頭?3. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?4. javascript - vscode alt+shift+f 格式化js代碼,通不過(guò)eslint的代碼風(fēng)格檢查怎么辦。。。5. sql語(yǔ)句 - mysql中關(guān)聯(lián)表查詢(xún)問(wèn)題6. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變7. mysql updtae追加數(shù)據(jù)sql語(yǔ)句8. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?9. html - vue項(xiàng)目中用到了elementUI問(wèn)題10. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?
