昨天執行了這樣一個批量刪除的語句
DELETE
FROM
bd_country
WHERE
id IN (
SELECT
id
FROM
bd_country
WHERE
statecode IS NULL
AND citycode IS NULL
AND nameCN IS NULL
)
然後出現了 [Err] 1093 - You can't specify target table 'bd_country' for update in FROM clause的錯誤,當時很納悶 一直這樣寫的怎麼會出現問題呢,它的意思是(你不能在FROM子句指定目標表更新),我想了想是不是以前我一直用的Oracle,Oracle可以但是Mysql不可以。
解決思路:既然Mysql不讓對查詢到的目標語句進行更新,那麼我在它的上面在套一個子查詢就可以。
DELETE
FROM
bd_country
WHERE
id IN (
SELECT
tmp.id
FROM
(
SELECT
id
FROM
bd_country
WHERE
statecode IS NULL
AND citycode IS NULL
AND nameCN IS NULL
) tmp
)