给定一个学生成绩表 grade,有三个字段,id(主键)、name 和 score,分别是学生号(整数),姓名(字符串) 和分数(整数)。
select * from grade
id | name | score |
---|---|---|
1003 | 张三 | 60 |
… | … | … |
但是这个班级里有一些人是重名的,比如可能有三个人都叫张三,但是分数可能并不相同。
id | name | score |
---|---|---|
1003 | 张三 | 60 |
2004 | 李四 | 70 |
1006 | 张三 | 65 |
3005 | 王五 | 80 |
4007 | 张三 | 85 |
… | … | … |
现在我希望可以去掉重复的名字,保留同名记录中的任意一条作为有效记录。请用一条查询 SQL 语句实现。
???
id | name | score |
---|---|---|
1006 | 张三 | 65 |
2004 | 李四 | 70 |
3005 | 王五 | 80 |
… | … | … |
好,下面开始公布答案
select a.* from
grade a, (select name, min(id) id from grade group by name) as b
where a.id = b.id
如果这个 SQL 理解起来有点困难,那么恭喜你,你必须要好好恶补一下 MySQL 了。