2 个赞
让我来告诉你:
- 直接在查询中使用 ROW_NUMBER() 生成序号,并基于该序号进行过滤
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY some_column ORDER BY another_column) as rn
FROM your_table
) t
WHERE t.rn <= N; - 使用子查询或CTE(公用表表达式)来先生成带有序号的临时表,然后基于这个序号进行过滤
WITH RankedData AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY some_column ORDER BY another_column) as rn
FROM your_table
)
SELECT *
FROM RankedData
WHERE rn <= N;
11
这个感觉不像语法报错,语法报错的话应该会提示什么right syntax to use near …
学习学习
多次试了后,要进行 row_number() 排序的表是物理表的话,可以使用排序序号进行过滤,若是临时表的话,就不能使用排序序号进行过滤了,不知有什么解决办法,脚本是从oracle迁移过来的
感谢分享