我有一个SQL查询,像这样:ROWNUM没有显示我需要的结果?
SELECT
make, model, year
FROM table
WHERE ROWNUM <= 15
ORDER BY year DESC
问题是它的ORDER BY之前ROWNUM,所以我没有看到最近几年。它选择前15行数据然后排序。我需要先按年降序排列,然后选择前15个。达到此目的的最佳方式是什么?
谢谢!
我有一个SQL查询,像这样:ROWNUM没有显示我需要的结果?
SELECT
make, model, year
FROM table
WHERE ROWNUM <= 15
ORDER BY year DESC
问题是它的ORDER BY之前ROWNUM,所以我没有看到最近几年。它选择前15行数据然后排序。我需要先按年降序排列,然后选择前15个。达到此目的的最佳方式是什么?
谢谢!
使用此:
SELECT *
FROM
(SELECT make,
model,
YEAR,
rownum rowno
FROM
(SELECT make, model, YEAR FROM TABLE ORDER BY YEAR DESC
)
)
WHERE rowno <=15;
第一 - 从年份子查询中返回记录集,使用第二个子查询项目rownumber,将rowno限制为< = 15
谢谢!这是我用过的。 – dansmith841
没有对性能的关注(我相信你还是会扫描整个表),尝试公用表表达式(CTE):
WITH cte AS (
SELECT
make, model, year
FROM table
ORDER BY year DESC
)
SELECT *
FROM cte
WHERE ROWNUM <= 15;
感谢CTE的例子,这是第一个我'我听说过它。 – dansmith841
您已经在您的问题上回答了:)。首先你做出选择顺序,然后从那个结果中选择用rownum – Leo
'SELECT * FROM(SELECT * FROM TABLE ORDER BY year DESC)WHERE ROWNUM <= 15' – Leo