我有一個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