您的位置:首页 > 数据库 > MySQL

MySQL删除重复数据

2013-10-07 18:20 357 查看
1.没有主键,添加主键删除。
DELETE t1 FROM some_table t1,some_table t2 WHERE t1.new_primary_key!=t2.new_primary_key AND t1.column1=t2.column1 (AND t1.column2=t2.column2 )* ;
2. 有主键但不是int型。
CREATE TABLE IF NOT EXISTS `noid`(
`pk` VARCHAR(20) NOT NULL COMMENT '字符串主键',
`name` VARCHAR(20) NOT NULL,
`add` VARCHAR(20) NOT NULL,
PRIMARY KEY(`pk`))ENGINE=INNODB;
INSERT INTO `noid`(`pk`,`name`,`add`) VALUES('a','abc',"123"),('b','abc',"123"),('c','abc',"321"),('d','abc',"123"),('e','xzy',"123"),('f','xzy',"456"),('g','xzy',"456"),('h','xzy',"456"),('i','xzy',"789"),('j','xzy',"987"),('k','xzy',"789"),('l','ijk',"147"),('m','ijk',"147"),('n','ijk',"852"),('o','opq',"852"),('p','opq',"963"),('q','opq',"741"),('r','tpk',"741"),('s','tpk',"963"),('t','tpk',"963"),('u','wer',"546"),('v','wer',"546"),('w','once',"546");
#保留id最小的行:
DELETE FROM noid
USING noid a ,(SELECT MIN(id) id,NAME,`add` FROM noid GROUP BY NAME,`add` HAVING COUNT(*)>1) b
WHERE a.name=b.nae AND a.add=b.add AND a.id<>b.id
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串