问题很简单,删除表
中重复的行
所以如果表是:
| id | name |
| 1 | aaaaa |
| 2 | bbbbb |
| 3 | aaaaa |
输出结果将是:
| id | name |
| 1 | aaaaa |
| 2 | bbbbb |
这是我正在使用的查询:
delete t1
from Table t1
, Table t2
where t1.name = t2.name
and t1.Id > t2.Id
上面的查询工作正常。
不过,我稍微修改一下查询:
delete
from Table
where Id in (select t1.Id from Table t1, Table t2 where t1.name = t2.name and t1.Id > t2.Id)
执行时,报错信息为“Error Code: 1093. You can't specify target table 'table' for update in FROM clause”
我的问题是为什么这个子查询不能正确执行?幕后故事是什么
提前致谢。
最佳答案
因为选择表会在记录上设置读取锁定,然后您将尝试更改这些记录。
关于MySQL 在子查询中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958306/