SQL问题

A表

image.png


我想取出name为a,b,c,d更新时间离现在最近的那一条数据,

取出数据样例:

image.png

读书人 发布于 2019-12-23 08:54 (编辑于 2019-12-23 09:59)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
2
张洪威Lv6高级互助
发布于2019-12-23 10:07(编辑于 2019-12-23 10:08)

select a.* from a

inner join ( select name,max(update_time) as t from a group by name) b on a.name=b.name and a.update_time=b.t


关联一下就行了。

最佳回答
2
枫城Lv7初级互助
发布于2019-12-23 08:56

row_number() over(partition by a order by b desc) rn 用法 看下这个用法 组内排序,时间近的为1 然后取出 

http://www.blogjava.net/kxbin/articles/360195.html。

  • 读书人 读书人(提问者) 这个没看懂啊,,,对不起我太菜
    2019-12-23 10:00 
  • 枫城 枫城 回复 读书人(提问者) 没事,这个相对max可以取排序第二,第三的值。如果取最近确实MAX聚合函数方便点
    2019-12-23 11:18 
最佳回答
1
JBadminLv3初级互助
发布于2019-12-23 09:05

select  name , max(update_time) from  A表

group by name

  • 读书人 读书人(提问者) 如果只要这两个字段,这样是可以得,,,,我修改了一下,您看一下
    2019-12-23 10:00 
最佳回答
1
JackloveLv7高级互助
发布于2019-12-23 09:30
select  
name , 
max(update_time)
from  表 
group by name


  • 读书人 读书人(提问者) 如果只要这两个字段,这样是可以得,,,,我修改了一下,您看一下
    2019-12-23 10:00 
最佳回答
1
nanxi111Lv5见习互助
发布于2019-12-23 09:35

select  name , max(update_time) as  update_time

from 表名

group by name


  • 读书人 读书人(提问者) 如果只要这两个字段,这样是可以得,,,,我修改了一下,您看一下
    2019-12-23 10:01 
  • nanxi111 nanxi111 回复 读书人(提问者) select name , number,update_time from 表名 a where not exists(select * from 表名 b where a.name=b.name and a.update
    2019-12-23 10:15 
最佳回答
0
menirvanaLv3见习互助
发布于2019-12-23 10:56

其实换个思路,不用SQL实现,就是在表格中按名字分组,取各个分组中排名第一的数据,过滤一下排名就可以啦,最近几条都有,哈哈

  • 7关注人数
  • 709浏览人数
  • 最后回答于:2019-12-23 10:56
    请选择关闭问题的原因
    确定 取消
    返回顶部