《Mysql學(xué)習(xí)mysql中錯(cuò)誤:1093-You can’t specify target table for update in FROM clause的解決方法》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)mysql中錯(cuò)誤:1093-You can’t specify target table for update in FROM clause的解決方法,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
MYSQL必讀發(fā)現(xiàn)問(wèn)題
MYSQL必讀最近在處理一些數(shù)據(jù)庫(kù)中數(shù)據(jù)的時(shí)候,寫(xiě)了下面的這一條sql語(yǔ)句:
MYSQL必讀
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
)
MYSQL必讀上面的sql是想將某個(gè)區(qū)間的數(shù)據(jù)進(jìn)行修改,但是放到測(cè)試環(huán)境下一跑,報(bào)下面的錯(cuò)誤:
MYSQL必讀
[Err] 1093 C You can't specify target table ‘f_student' for update in FROM clause
MYSQL必讀意思很顯而易見(jiàn)了,說(shuō)不能對(duì)進(jìn)行查詢(xún)操作的表進(jìn)行update操作,也就說(shuō)我們的where條件中進(jìn)行了子查詢(xún),并且子查詢(xún)也是針對(duì)需要進(jìn)行update操作的表的,mysql不支持這種查詢(xún)修改的方式.
MYSQL必讀解決方法
MYSQL必讀上網(wǎng)查了一下,針對(duì)這種問(wèn)題可以通過(guò)”繞”的方式進(jìn)行實(shí)現(xiàn),下面看sql語(yǔ)句.
MYSQL必讀
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
)
MYSQL必讀ok,完全沒(méi)有問(wèn)題.上面的sql相比于之前的sql只是在取id的時(shí)候繞了一下,通過(guò)一個(gè)子查詢(xún)的方式獲取到id,而不是直接進(jìn)行獲取.
MYSQL必讀總結(jié)
MYSQL必讀以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/1230.html