我想为每个由最新日期过滤的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
在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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。