【问题标题】:How do I delete all repeating records in a table?如何删除表中的所有重复记录?
【发布时间】:2013-07-24 21:13:20
【问题描述】:

我正在寻找一种方法来删除表中的所有重复记录。 我有一个查询,但没有用:

delete from lista
where id in
(
    select id
    from lista
    group by tytul_pl
    having count(tytul_pl) > 1
);

服务器响应:

错误代码:1093。您不能指定目标表 'lista' 进行更新 FROM 子句

这个查询:

select id
from lista
group by tytul_pl
having count(tytul_pl) > 1

运行良好。

哪里出错了?

【问题讨论】:

  • 您使用的是什么 DBMS?
  • 我正在使用 MySQL Server 5.6 CE
  • 您是要保留一条记录并删除重复的记录,还是删除所有重复的记录?
  • 我要保留一份记录。

标签: mysql sql where sql-delete


【解决方案1】:

这样可以保留一条记录并删除所有其他重复项:

DELETE t1 
FROM lista t1
JOIN lista t2 
 ON t1.id > t2.id 
AND t1.tytul_pl = t2.tytul_pl

【讨论】:

    【解决方案2】:

    我想你想要的是这个

    DELETE lista FROM lista 
    LEFT OUTER JOIN (
          SELECT MIN(ID) AS minID 
          FROM lista 
          GROUP BY tytul_pl) AS keepRowTable ON lista.ID = keepRowTable.minID
    WHERE keepRowTable.minID IS NULL
    

    你可以try it out here

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2011-08-18
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多