代码之家  ›  专栏  ›  技术社区  ›  Koerr

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

  •  1
  • Koerr  · 技术社区  · 15 年前

    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 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    从这个链接查看我的答案希望能对你有所帮助-既然你已经有了ID栏,忽略在我的答案中添加身份

    deleting duplicate records

        2
  •  1
  •   codingbadger    15 年前

    我想这应该能帮到你

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

    由于这是一个删除-这是未经测试,所以请先测试它。

        3
  •  0
  •   hsz    15 年前
    DELETE FROM site
          WHERE id NOT IN (
                  SELECT id
                    FROM site
                GROUP BY name
                )