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