mysql SQL語句You can't specify target table ' for update in FROM clause解決

昨天執行了這樣一個批量刪除的語句

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
	)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章