mysql表去掉重复记录 不会求相助
mysql表去掉重复记录 不会求帮助
有一个mysql统计表A表(id为自增字段),表结构和数据如下:
id name score
1 zz 60
2 ll 70
3 ww 80
4 ff 90
5 zz 60
6 ww 80
问题来了:表里面有两条重复的记录(id号为1和5的重复,id号为3和6的重复)
现在如何通过一条sql语句 让重复的记录去掉,最终我需要的结果为:
id name score
1 zz 60
2 ll 70
3 ww 80
4 ff 90
备注说明:数据重复的只是举例列举了两条 其实这个表里存在重复记录的量很多而且不定,
恳求各位大牛帮看下 如何通过sql语句将重复的记录去掉,跪谢!祝好人一生平安
------解决方案--------------------
delete a from tt a inner join tt b on a.name=b.name and a.score=b.score and a.id>b.id
------解决方案--------------------
如果非要一条sql删除
delete from tb where id in(
select min(id) as id
from tb
group by name,score);
不过效率很低
------解决方案--------------------
or
SELECT a.`name`,a.`score`,MIN(a.`id`) FROM ttp4 a GROUP BY a.`name`,a.`score`
在NAME、SCORE、ID上建立索引
------解决方案--------------------
------解决方案--------------------
这是自连接查询,自行修改一下,在我SQL语句中,A、B为TT表的别名
delete a1 from a a1 inner join a b1 on a1.name=b1.name and a1.score=b1.score and a1.id>b1.id
------解决方案--------------------
OR
给出真实数据测试
贴建表及插入记录的SQL
------解决方案--------------------
A1、B1都为表A的别名,自连接查询,对本表进行操作
select * from a a1 inner join a b1 on a1.name=b1.name and a1.score=b1.score and a1.id>b1.id
看看结果
有一个mysql统计表A表(id为自增字段),表结构和数据如下:
id name score
1 zz 60
2 ll 70
3 ww 80
4 ff 90
5 zz 60
6 ww 80
问题来了:表里面有两条重复的记录(id号为1和5的重复,id号为3和6的重复)
现在如何通过一条sql语句 让重复的记录去掉,最终我需要的结果为:
id name score
1 zz 60
2 ll 70
3 ww 80
4 ff 90
备注说明:数据重复的只是举例列举了两条 其实这个表里存在重复记录的量很多而且不定,
恳求各位大牛帮看下 如何通过sql语句将重复的记录去掉,跪谢!祝好人一生平安
------解决方案--------------------
delete a from tt a inner join tt b on a.name=b.name and a.score=b.score and a.id>b.id
------解决方案--------------------
如果非要一条sql删除
delete from tb where id in(
select min(id) as id
from tb
group by name,score);
不过效率很低
------解决方案--------------------
or
SELECT a.`name`,a.`score`,MIN(a.`id`) FROM ttp4 a GROUP BY a.`name`,a.`score`
在NAME、SCORE、ID上建立索引
------解决方案--------------------
------解决方案--------------------
这是自连接查询,自行修改一下,在我SQL语句中,A、B为TT表的别名
delete a1 from a a1 inner join a b1 on a1.name=b1.name and a1.score=b1.score and a1.id>b1.id
------解决方案--------------------
OR
给出真实数据测试
贴建表及插入记录的SQL
------解决方案--------------------
A1、B1都为表A的别名,自连接查询,对本表进行操作
select * from a a1 inner join a b1 on a1.name=b1.name and a1.score=b1.score and a1.id>b1.id
看看结果