首页 > 其他 > 详细

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

时间:2020-05-27 19:24:45      阅读:32      评论:0      收藏:0      [点我收藏+]

mysql中You can‘t specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。

UPDATE bus_clew SET clew_status = ‘3‘ WHERE
id IN (
SELECT
c.id
FROM
bus_clew c,
bus_clew_keeper k
WHERE
c.id = k.clew_id
AND c.clew_status = 0
AND c.is_del = 0
AND EXISTS (
SELECT
1
FROM
bus_clew_track t
WHERE
t.clew_id = c.id
AND t.keeper_id = k.keeper_id
AND t.is_del = 0
)
);
 
要改成下面:
UPDATE bus_clew SET clew_status = ‘3‘ WHERE
id IN (
 
select c1.id from (
SELECT
c.id
FROM
bus_clew c,
bus_clew_keeper k
WHERE
c.id = k.clew_id
AND c.clew_status = 0
AND c.is_del = 0
AND EXISTS (
SELECT
1
FROM
bus_clew_track t
WHERE
t.clew_id = c.id
AND t.keeper_id = k.keeper_id
AND t.is_del = 0
)) c1
);

也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。

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

原文:https://www.cnblogs.com/jimoliunian/p/12975258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!