Sql 返回多个元素最大值的整行
我有一张这样的桌子:Sql 返回多个元素最大值的整行,sql,Sql,我有一张这样的桌子: id_this_table fk_tableX fk_tableY ts_started ts_activated ts_expired 1 1 1 2019-03-20 2019-03-21 2019-03-22 2 1 2 2019-03-23 2019-03-24
id_this_table fk_tableX fk_tableY ts_started ts_activated ts_expired
1 1 1 2019-03-20 2019-03-21 2019-03-22
2 1 2 2019-03-23 2019-03-24 2019-03-25
3 2 3 2019-03-23 2019-03-24 2019-03-26
对于多个元素,我需要通过fk_tableX获取每个元素的最新值。就像订阅一样,我需要获得每个“客户端”中最新的一个
结果应该是这样的
id_this_table fk_tableX fk_tableY ts_started ts_activated ts_expired
2 1 2 2019-03-23 2019-03-24 2019-03-25
3 2 3 2019-03-23 2019-03-24 2019-03-26
使用相关子查询
select t1.* from table_name t1
where t1.ts_expired=( select max(ts_expired) from table_name t2 where t1.fk_tableX=t2.fk_tableX)
或者,如果您的dbms支持,请使用row_number()
with cte as
(select t.*,row_number() over(partition by fk_tableX order by ts_expired desc) rn from table_name t
) select * from cte where rn=1
请不要使用不适用于您的问题的标记。我删除了数据库标签,因为不清楚您实际使用的是哪一个。请仅添加您实际使用的数据库的标记为什么没有
fk_tableX
=2的行?很抱歉,这是一个错误typo@ScottHunter根据描述,在我看来,这似乎是打字错误,因为ts_过期是25和26,这与双一btw不相关,谢谢通知