需要借助ROW_NUMBER() OVER()函数
简单介绍 :row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY 排序Name DESC) 是先把排序Name列降序,再为降序以后的每一条排序Name记录返回一个序号。 row_number() OVER (PARTITION BY 分组Name ORDER BY 排序Name) 表示根据分组Name分组,在分组内部根据 排序Name排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的数字)
栗子:
SELECT
*
FROM
( SELECT *, row_number() over( PARTITION BY city ORDER BY order_no asc ) AS rank_index FROM `scenic` ) r
WHERE
rank_index <=2