查找重复试题:
将上面的查询select改为delete(这样会出错的)
DELETE
FROM
dept
WHERE
dname IN (
SELECT
dname
FROM
dept
GROUP BY
dname
HAVING
count(1) > 1
)
会出现如下错误:[Err] 1093 - You can't specify target table 'dept' for update in FROM clause
原因是:更新这个表的同时又查询了这个表,查询这个表的同时又去更新了这个表,可以理解为死锁。mysql不支持这种更新查询同一张表的操作
解决办法:把要更新的几列数据查询出来做为一个第三方表,然后筛选更新。
本文探讨了在MySQL中尝试直接从查询同一表的子查询中删除重复记录时出现的错误,并提供了一种解决方案,即将要更新的数据作为第三方表进行筛选更新。
8422

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



