Select 一个元素的 SQL 中只有 n 行
Select only n rows in an SQL for an element
我有一个 table 每个列都有很多列 table2_id 我想只有 id 最大的 5 行
id | table_2_id | name
----------------------
1 | 1 |A
2 | 1 |B
3 | 1 |C
4 | 1 |D
5 | 1 |E
6 | 1 |F
7 | 1 |F
8 | 2 |G
9 | 3 |H
10 | 3 |I
在table_2_id中有7个元素有1个,我想有5个
所以我想要
id | table_2_id | name
----------------------
3 | 1 |C
4 | 1 |D
5 | 1 |E
6 | 1 |F
7 | 1 |F
8 | 2 |G
9 | 3 |H
10 | 3 |I
您可以使用row_number()
select * from
(
select *, row_number() over(partition by table_2_id order by id desc) as rn
from tablename
)A where rn<=5
我有一个 table 每个列都有很多列 table2_id 我想只有 id 最大的 5 行
id | table_2_id | name
----------------------
1 | 1 |A
2 | 1 |B
3 | 1 |C
4 | 1 |D
5 | 1 |E
6 | 1 |F
7 | 1 |F
8 | 2 |G
9 | 3 |H
10 | 3 |I
在table_2_id中有7个元素有1个,我想有5个
所以我想要
id | table_2_id | name
----------------------
3 | 1 |C
4 | 1 |D
5 | 1 |E
6 | 1 |F
7 | 1 |F
8 | 2 |G
9 | 3 |H
10 | 3 |I
您可以使用row_number()
select * from
(
select *, row_number() over(partition by table_2_id order by id desc) as rn
from tablename
)A where rn<=5