MySQL在子查询中删除

时间:2018-02-24 01:04:37

标签: mysql subquery

问题很简单,删除table

中的重复行

所以如果表是:

| 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)

执行时,错误消息为“错误代码:1093。您无法在FROM子句中为更新指定目标表'表'”

我的问题是为什么这个子查询无法正确执行?场景背后的故事是什么

提前感谢。

1 个答案:

答案 0 :(得分:3)

因为选择表会对记录设置读锁定,然后您尝试更改。