我想轻松删除此表中的重复条目
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')
我只想保留一排
一个主意 ?
谢谢!
如果您UNIQUE使用关键字在两列上定义索引IGNORE,MySQL 将删除每条记录的所有副本,但只有一个副本:
ALTER IGNORE TABLE mups ADD UNIQUE (idgroupe, fan)
如果没有指向此表的外键关系,您可以使用(临时)表并在那里复制不同的行:
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
您可以找出重复项是这样的:
SELECT idgroupe, fan, count(*)
FROM mups
GROUP BY idgroupe, fan
HAVING count(*) > 1