Postgresql 获取每个组中的最后N行,其中N值是基于联接表的动态值
所以有两张桌子Postgresql 获取每个组中的最后N行,其中N值是基于联接表的动态值,postgresql,postgresql-9.5,Postgresql,Postgresql 9.5,所以有两张桌子 table_1 - id, limit_number table_2 - id, created_at, table_1_id 我们的要求是为每个表1的id组选择表2中的最后N行,其中N是limit\u number 样本数据 table_1 id, limit_number 1, 3 2, 1 结果应该是 table_2 id, created_at, table_1_id 2, ..., 1 3, ..., 1 4, ..., 1 6, ..., 2 每个表1\u
table_1 - id, limit_number
table_2 - id, created_at, table_1_id
我们的要求是为每个表1的id组选择表2中的最后N行,其中N是limit\u number
样本数据
table_1
id, limit_number
1, 3
2, 1
结果应该是
table_2
id, created_at, table_1_id
2, ..., 1
3, ..., 1
4, ..., 1
6, ..., 2
每个表1\u id
返回的值如下限制编号
我尝试使用
PARTITION()
函数来分配列组,但它对动态值N不起作用。如有任何帮助,将不胜感激。谢谢 以下是您的操作方法:
select t2.*
from
(
select *,row_number() over (partition by table_1_id order by created_date desc) rn from table2
)t2
join table_1 t on t.limit_number >= t2.rn and t2.table_1_id = t.id
您可以更改
创建的\u date desc
,以便更改任何有意义的内容,如Id desc
出色的工作方式。非常感谢。
select t2.*
from
(
select *,row_number() over (partition by table_1_id order by created_date desc) rn from table2
)t2
join table_1 t on t.limit_number >= t2.rn and t2.table_1_id = t.id