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)
如圖 成功: