开发者社区> 问答> 正文

SQL为按最新日期过滤的每个table_number获取一行

我想为每个由最新日期过滤的table_number获得一行。

如果可能的话,如何使用JPA进行操作,我正在使用Spring Boot。

order_table_id date is_done is_started table_number


2 2019-11-15 21:01:51.1266667 0 1 1 3 2019-11-15 21:02:32.4166667 0 1 2 4 2019-11-15 21:02:39.1333333 0 0 3 5 2019-11-15 21:02:46.2200000 1 1 4 10 2019-11-16 21:02:46.2200000 1 0 4

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 09:57:02 343 0
1 条回答
写回答
取消 提交回答
  • 在Postgres中,一种方便的方法是distinct on:

    select distinct on(table_number) t.* from mytable t order by t.table_number, t.date desc, order_table_id desc DB Fiddle上的演示:

    order_table_id | 日期| is_done_is_ | 开始 table_number -------------:| :------------------ | ----------:| ------:| -----------: 2 | 2019-11-15 21:01:51 | 0 | 1 | 1个 3 | 2019-11-15 21:02:32 | 0 | 1 | 2 4 | 2019-11-15 21:02:39 | 0 | 0 | 3 10 | 2019-11-16 21:02:46 | 1 | 0 | 4 注意:您的样本数据实际上没有任何意义,因为属于的两个记录table_number 4具有相同的date。我添加了一个附加的排序条件来以一致的方式打破平局。

    在支持窗口功能的RDBMS(例如SQL Server)中,一种方法是使用ROW_NUMBER():

    select * from ( select t.*, row_number() over(partition by table_number order by date desc, order_table_id desc) rn from mytable t ) t where rn = 1

    2019-11-18 09:57:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载