在执行一个删除语句的时候写了如下语句
DELETE FROM user
WHERE card_num IN (
SELECT card_num
FROM user
GROUP BY card_num
HAVING COUNT(*) > 1
);
执行报错:You can't specify target table 'user' for update in FROM clause"
这是由于删除或更新会影响之查询语句,所以会报错. 正确的做法是将查询结果放入到一个临时表中
正确写法:
DELETE FROM user
WHERE card_num IN (
SELECT *
FROM (
SELECT card_num
FROM user
GROUP BY card_num
HAVING COUNT(*) > 1
) t
);

本文探讨了在尝试从同一表中删除重复记录时遇到的SQL错误:You can't specify target table 'user' for update in FROM clause。通过一个具体的例子,解释了错误的原因,并提供了一个有效的解决方案,即将子查询的结果放入一个临时表中再进行删除操作。
1651

被折叠的 条评论
为什么被折叠?



