sql 保留整数_一道打击了无数人的简单 SQL 面试题

给定一个学生成绩表 grade,有三个字段,id(主键)、name 和 score,分别是学生号(整数),姓名(字符串) 和分数(整数)。

select * from grade

idnamescore
1003张三60

但是这个班级里有一些人是重名的,比如可能有三个人都叫张三,但是分数可能并不相同。

idnamescore
1003张三60
2004李四70
1006张三65
3005王五80
4007张三85

现在我希望可以去掉重复的名字,保留同名记录中的任意一条作为有效记录。请用一条查询 SQL 语句实现。

???

idnamescore
1006张三65
2004李四70
3005王五80

为了避免你们直接看到结果,下面插播一本最新的优质掘金小册 《MySQL是怎样使用的:从零蛋开始学习MySQL》,适合基础知识匮乏的 MySQL 小白阅读。限时优惠 8 折。

ee8f42dbc115d609b47c1f17e2618f87.png

如果你觉得自己 MySQL 基础够好了,想要阅读高级的知识,可以看他的另一部作品 《MySQL 是怎样运行的:从根儿上理解 MySQL》,这个知识太有深度,需要花很多精力才能啃下来。我发现头条不少面试官出的 MySQL 知识题都在这本小册里。限时优惠 8 折。

8f136c049bbddb636b1574003c5de0e0.png

好,下面开始公布答案

select a.* from
grade a, (select name, min(id) id from grade group by name) as b
where a.id = b.id

如果这个 SQL 理解起来有点困难,那么恭喜你,你必须要好好恶补一下 MySQL 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值