【sql语句求教】

75闪光雷 2018-08-16 05:42:27
我有一个表
id group_id time
1 1 20
2 1 18
3 2 15
4 2 15
5 3 10

我的需求是 查找出同一组(group_id相等)的time最大的那几条数据。
查询完结果应该是
id group_id time
1 1 20
3 2 15
5 3 10
请问怎么写?
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
75闪光雷 2018-08-17
  • 打赏
  • 举报
回复
引用 4 楼 kimsung 的回复:

select group_id, max(time) as time
  from table
 group by group_id;
这个厉害了 很快
kimsung 2018-08-17
  • 打赏
  • 举报
回复

select group_id, max(time) as time
from table
group by group_id;

fly_flsh 2018-08-17
  • 打赏
  • 举报
回复
引用 2 楼 qq_34309305 的回复:
[quote=引用 1 楼 hnyxwl_liufan 的回复:]
SELECT a.id, a.group_id, a.time
FROM table a
WHERE a.time= (
SELECT max(time)
FROM table
WHERE a.group_id= group_id)

谢谢 ,我试了 这个执行效率太低了 ,我数据库几万条数据 运行三分钟 没出来结果
后来同事给的建议
SELECT *
from (SELECT * from table ORDER BY time) a
GROUP BY group_id[/quote]

SELECT * from table ORDER BY time是根据time字段正序排列,GROUP BY group_id 查询的是group_id相同的第一条记录,所以你这个查询出的是time最小的数据;SELECT * from table ORDER BY time desc 查询才对
75闪光雷 2018-08-17
  • 打赏
  • 举报
回复
引用 1 楼 hnyxwl_liufan 的回复:
SELECT a.id, a.group_id, a.time FROM table a WHERE a.time= ( SELECT max(time) FROM table WHERE a.group_id= group_id)
谢谢 ,我试了 这个执行效率太低了 ,我数据库几万条数据 运行三分钟 没出来结果 后来同事给的建议 SELECT * from (SELECT * from table ORDER BY time) a GROUP BY group_id
hnyxwl_liufan 2018-08-16
  • 打赏
  • 举报
回复
SELECT a.id, a.group_id, a.time
FROM table a
WHERE a.time= (
SELECT max(time)
FROM table
WHERE a.group_id= group_id)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧