原始表格:
自增 ID (id) | 名称 (name) | 成绩 (score) |
---|---|---|
1 | 小明 | 10 |
2 | 小红 | 23 |
3 | 小特 | 66 |
4 | 小红 | 32 |
5 | 小特 | 68 |
6 | 小黄 | 66 |
目标表格:
自增 ID (id) | 名称 (name) | 成绩 (score) |
---|---|---|
1 | 小明 | 10 |
4 | 小红 | 32 |
5 | 小特 | 68 |
6 | 小黄 | 66 |
需求:获取每个学生最新的一个成绩
已经尝试的方法:
SELECT * FROM (SELECT * FROM tb_test
ORDER BY id DESC) GROUP BY name
疑问:
GROUP BY
这样用法是规范的吗?看教程一般都是跟 SUM 等公式一起用的GROUP BY
在 SQLiteStudio 软件中获取的 id 是升序的,但在 QT 中使用又是降序的,是数据库引擎的问题? 1
cnoder 2022-06-29 18:44:48 +08:00 2
select * from table where id in (select max(id) from table group by name )
|
2
Suddoo 2022-06-29 19:04:36 +08:00 via iPhone
表里有创建时间字段吧,开窗函数,对名字分组,按时间降序排,取组内第一个
|
3
BreadKiller 2022-06-29 19:52:05 +08:00
select max(id),name,score from table group by name
|
4
akira 2022-06-29 21:39:23 +08:00
一楼就是最简单的方案了
|
5
v2eb 2022-06-30 00:11:13 +08:00 via Android
select group_concat(score) from table group by name
|