0

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

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

我只想保留一排

一个主意 ?

谢谢!

4

3 回答 3

2

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

ALTER IGNORE TABLE mups ADD UNIQUE (idgroupe, fan)
于 2013-01-16T20:51:23.290 回答
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

于 2013-01-19T17:47:49.197 回答
0

您可以找出重复项是这样的:

SELECT idgroupe, fan, count(*)
FROM mups
GROUP BY idgroupe, fan
HAVING count(*) > 1
于 2013-01-16T20:50:05.870 回答