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
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
相关文章推荐
- MySQL删除重复数据 并保留ID最大值
- MySQL下删除重复记录只保留一条数据
- 高性能可扩展mysql(执行计划,索引分析优化改写,删除重复数据,区间统计,满查询日志)
- MySQL中删除重复数据只保留一条
- MySQL 删除数据库中重复数据(以部分数据为准)
- Mysql中查找重复数据,删除重复数据
- MySql-如何查询删除数据表重复记录
- MySQL语句删除数据库重复记录数据行
- mysql学习总结一当数据不存在的时候插入,存在的时候进行更新,删除重复数据
- mysql删除某个字段重复的数据
- mysql删除重复数据
- mysql、oracle删除重复数据
- mysql 删除重复数据只保留一条
- 吃相难看的mysql重复数据删除
- mysql删除重复数据只保留一条
- mysql删除重复数据
- MySQL中删除重复数据只保留一条
- Mysql删除重复数据
- MYSQL中快速高效删除大数据表中的重复数据
- 关于MYSQL通过子查询删除重复数据的for update报错问题解决