如何通过一个SQL删除重复的条目?

时间:2010-09-15 09:59:18

标签: sql mysql

我有一张表deal

CREATE TABLE `deal` (
  `id` int(11) NOT NULL auto_increment,
  `site` int(11) NOT NULL default '0',
  `area` int(11) NOT NULL default '0',
  `name` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
);

我想创建:

UNIQUE KEY `site` (`site`,`area`,`name`);

但现在,name提交的并不是唯一的,当我创建此密钥时,我收到错误:

duplicate entry 'aaa' for key 2

我的表数据:

Data
id site  area  name
---------------------------------
1  site1 area1 aaa
2  site1 area2 bbb
3  site1 area1 aaa   <<<< i want delete this
4  site2 area1 ccc
5  site2 area1 ccc   <<<< i want delete this
...

如何通过一个sql字符串来完成它?

感谢您的帮助:)

3 个答案:

答案 0 :(得分:1)

从这个链接检查我的回答希望应该帮助你 - 因为你已经有了ID列,所以在我的回答中忽略添加身份

deleting duplicate records

答案 1 :(得分:1)

我认为这应该为你做到

Delete From deal
Where ID in (

    Select Max(Id)
    From deal
    Group by [site], area, [Name]
    Having Count(id) > 1
        )

因为这是删除 - 这是未经测试的,所以请先测试一下。

答案 2 :(得分:0)

DELETE FROM site
      WHERE id NOT IN (
              SELECT id
                FROM site
            GROUP BY name
            )