You can't specify target table 'XX' for update in FROM clause

You can’t specify target table ‘xx’ for update in FROM clause

當更新查詢出來的表的值時,會出現如上問題。

需求:想更新查詢出來的表數據的某些值。

例如:更新地區表中fatherid爲0的級別(level)爲1:

1.查出所有的fatherid爲0的地區數據
SELECT t1.districtid FROM ta_district t1 WHERE t1.fatherid = 0

如圖:
在這裏插入圖片描述

2.若直接更新查詢出的數據即會報錯,如圖:

如圖:
在這裏插入圖片描述

3.需要先把查詢出來的結果集當做一個表,自我查詢一遍,再執行更新操作。
UPDATE ta_district 
SET LEVEL = 1 
WHERE
	districtid IN (
	SELECT
		newTable.districtid 
FROM
	( SELECT t1.districtid FROM ta_district t1 WHERE t1.fatherid = 0 ) AS newTable)

如圖 成功:
在這裏插入圖片描述

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