mysql中錯(cuò)誤:1093-You can’t specify target table for update in FROM clause的解決方法
發(fā)現(xiàn)問(wèn)題
最近在處理一些數(shù)據(jù)庫(kù)中數(shù)據(jù)的時(shí)候,寫了下面的這一條sql語(yǔ)句:
UPDATE f_student SET school_id = 0 WHERE id > ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) AND id < ( ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) + N )
上面的sql是想將某個(gè)區(qū)間的數(shù)據(jù)進(jìn)行修改,但是放到測(cè)試環(huán)境下一跑,報(bào)下面的錯(cuò)誤:
[Err] 1093 – You can't specify target table ‘f_student' for update in FROM clause
意思很顯而易見(jiàn)了,說(shuō)不能對(duì)進(jìn)行查詢操作的表進(jìn)行update操作,也就說(shuō)我們的where條件中進(jìn)行了子查詢,并且子查詢也是針對(duì)需要進(jìn)行update操作的表的,mysql不支持這種查詢修改的方式。
解決方法
上網(wǎng)查了一下,針對(duì)這種問(wèn)題可以通過(guò)”繞”的方式進(jìn)行實(shí)現(xiàn),下面看sql語(yǔ)句。
UPDATE f_student SET school_id = 0 WHERE
id >
(
SELECT id FROM (
SELECT id FROM f_student WHERE school_id = M LIMIT 1
) AS temp
)
AND id <
(
(
SELECT id FROM (
SELECT id FROM f_student WHERE school_id = M LIMIT 1
) AS temp_1
) + N
)
ok,完全沒(méi)有問(wèn)題。上面的sql相比于之前的sql只是在取id的時(shí)候繞了一下,通過(guò)一個(gè)子查詢的方式獲取到id,而不是直接進(jìn)行獲取。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
- 解決MySQL報(bào)錯(cuò):You?can‘t?specify?target?table?‘region‘?for?update?in?FROM?clause
- mysql事務(wù)select for update及數(shù)據(jù)的一致性處理講解
- Mysql 數(shù)據(jù)庫(kù)死鎖過(guò)程分析(select for update)
- mysql中You can’t specify target table for update in FROM clause錯(cuò)誤解決方法
- mysql SELECT FOR UPDATE語(yǔ)句使用示例
- mysql for update是鎖表還是鎖行實(shí)例詳解
相關(guān)文章
Navicat中如何導(dǎo)入數(shù)據(jù)庫(kù)SQL腳本并執(zhí)行
這篇文章主要給大家介紹了關(guān)于Navicat中如何導(dǎo)入數(shù)據(jù)庫(kù)SQL腳本并執(zhí)行的相關(guān)資料,Navicat是一個(gè)強(qiáng)大的MySQL數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)工具,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
MySQL根據(jù)條件遷移數(shù)據(jù)的幾種方法實(shí)現(xiàn)
本文主要介紹了MySQL根據(jù)條件遷移數(shù)據(jù)的實(shí)現(xiàn),包括使用INSERT INTO SELECT、UPDATE、DELETE語(yǔ)句以及結(jié)合子查詢進(jìn)行遷移,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
Linux中 MySQL 授權(quán)遠(yuǎn)程連接的方法步驟
如果需要遠(yuǎn)程連接 Linux 系統(tǒng)上的 MySQL 時(shí),必須為其 IP 和 具體用戶 進(jìn)行 授權(quán),本篇文章主要介紹了Linux中 MySQL 授權(quán)遠(yuǎn)程連接的方法步驟,感興趣的小伙伴們可以參考一下2018-10-10
MySQL數(shù)據(jù)庫(kù)查詢性能優(yōu)化策略
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)查詢性能優(yōu)化的策略,幫助大家的工作學(xué)習(xí)提高M(jìn)ySQL數(shù)據(jù)庫(kù)的性能,感興趣的朋友可以了解下2020-08-08
在MySQL中開(kāi)啟日志記錄并排查操作詳細(xì)步驟記錄
MySQL日志管理是數(shù)據(jù)庫(kù)系統(tǒng)維護(hù)和優(yōu)化的重要環(huán)節(jié),它提供了對(duì)服務(wù)器運(yùn)行狀態(tài)的詳細(xì)記錄,這篇文章主要給大家介紹了關(guān)于如何在MySQL中開(kāi)啟日志記錄并排查操作的相關(guān)資料,需要的朋友可以參考下2024-08-08

