下面的查询我做错了什么
Error Message : You can't specify target table 'cp_asseteventinquiry' for update in FROM clause
查询:
UPDATE cp_asseteventinquiry
SET Due_Date= curdate()
WHERE TopLevelAsset_Num =
(
SELECT Distinct(TopLevelAsset_Num) FROM cp_asseteventinquiry
WHERE cp_asseteventinquiry.History='NO'
AND NOT EXISTS(SELECT Scheduled_Date FROM flightlogs
WHERE flightlogs.Asset=cp_asseteventinquiry.TopLevelAsset_Num
AND flightlogs.Scheduled_Date=date_format (curdate(), '%m/%d/%Y'))
);
最佳答案
只需使用 SELECT
包装您的内部查询,如下所示:
UPDATE cp_asseteventinquiry
SET Due_Date= curdate()
WHERE TopLevelAsset_Num = (
SELECT *
FROM (
SELECT Distinct(TopLevelAsset_Num)
FROM cp_asseteventinquiry
WHERE cp_asseteventinquiry.History='NO'
AND NOT EXISTS( SELECT Scheduled_Date
FROM flightlogs
WHERE flightlogs.Asset=cp_asseteventinquiry.TopLevelAsset_Num
AND flightlogs.Scheduled_Date=date_format (curdate(), '%m/%d/%Y')
)
) AS t)
关于mysql - 使用Where子句中的查询更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27972617/