<分区>
为什么这个查询不起作用?
DELETE FROM cancome WHERE user_id IN (
SELECT user_id FROM cancome
GROUP BY user_id
HAVING COUNT(user_id)>3
)
limit 3
我收到此错误消息:
[Err] 1093 - You can't specify target table 'cancome' for update in FROM clause
标签 mysql
<分区>
为什么这个查询不起作用?
DELETE FROM cancome WHERE user_id IN (
SELECT user_id FROM cancome
GROUP BY user_id
HAVING COUNT(user_id)>3
)
limit 3
我收到此错误消息:
[Err] 1093 - You can't specify target table 'cancome' for update in FROM clause
最佳答案
这不起作用的原因是 MySQL 不允许您在子查询中引用您正在更新 (cancome) 的表。
然而,这可以通过在 FROM 中使用查询而不是表本身来克服,这具有复制请求的表值而不是引用您正在更新的表值的效果。
如此有效,即使违反直觉,也会起作用:
DELETE FROM cancome WHERE user_id IN
( SELECT user_id FROM (SELECT * FROM cancome) AS cancomesub
GROUP BY user_id HAVING COUNT(user_id)>3 )
limit 3
关于mysql - 如何解决 MySQL 错误 "You can' t specify target table X for update in FROM clause”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37251621/