SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY rank ASC) as row_num
FROM table_name
) t
WHERE row_num <= 2
以上代码会根据 group_id 字段分组,按照 rank 字段升序排列,并为每个分组的每条记录添加一个新的列 row_num,表示该记录在该分组内的排名。然后,外层查询将 row_num 小于等于 2 的记录(即每个分组的前两条记录)返回。