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上建立索引




探讨

引用:

delete a from tt a inner join tt b on a.name=b.name and a.score=b.score and a.id>b.id

大哥 看不懂你的语句的 我一共只有1张表的

而且你的语句 我看了 tt a inner join tt b ,我觉得这里有错误 是不是大哥哪里写错了 或者理解错了



这是自连接查询,自行修改一下,在我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表去掉重复记录 不会求相助

相关文章:

你感兴趣的文章:

标签云: