在SQL表中轻松删除重复的条目

时间:2013-01-16 20:46:02

标签: mysql sql

我想轻松删除此表中的duplice条目

CREATE TABLE IF NOT EXISTS `mups` (
  `idgroupe` varchar(15) NOT NULL,
  `fan` bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

示例:

如果我有3个条目

  ('36','143')
  ('36','143')
  ('36','143')

我只想保留一行

一个想法?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果使用UNIQUE关键字在两列上定义IGNORE索引,MySQL将删除除每条记录的一个副本之外的所有索引:

ALTER IGNORE TABLE mups ADD UNIQUE (idgroupe, fan)

答案 1 :(得分:1)

如果没有指向此表的外键关系,您可以使用(临时)表并在那里复制不同的行:

CREATE TABLE temp_mups AS 
SELECT DISTINCT *
FROM mups ;

然后从mups删除所有内容:

DELETE 
FROM mups ;

添加您想要的UNIQUE约束:

ALTER TABLE mups
ADD CONSTRAINT mups_UQ
  UNIQUE (idgroupe, fan) ;

获取数据:

INSERT INTO mups 
  (idgroupe, fan)
SELECT idgroupe, fan
FROM temp_mups ;

安全地放下临时表:

DROP TABLE temp_mups ;

在SQL-Fiddle中测试: test-1

答案 2 :(得分:0)

你可以找出重复的内容:

SELECT idgroupe, fan, count(*)
FROM mups
GROUP BY idgroupe, fan
HAVING count(*) > 1