我有一個查詢問題的rownum
select * from tablename where rownum =1;
這個查詢是給想要的結果,但如果我跑
select * from tablename where rownum=2;
則該查詢給空的結果。 任何想法爲什麼?
我有一個查詢問題的rownum
select * from tablename where rownum =1;
這個查詢是給想要的結果,但如果我跑
select * from tablename where rownum=2;
則該查詢給空的結果。 任何想法爲什麼?
我不認爲這是一個良好定義的查詢:
ROWNUM是一個僞列返回的結果集 一排的位置。在執行ORDER BY 條款之前,從數據庫中選擇記錄 並且在 之後評估ROWNUM。
由於ROWNUM的分配方式,謂詞WHERE rownum=2
永遠不會成立。例如,如果表格中有5行,算法會變成類似於
由於沒有「第一行」在結果集中,就不可能有「第二排」。您可以在不等式比較中使用ROWNUM,即
SELECT *
FROM table_name
WHERE rownum <= 2
將返回2行。
如果你想在表格來確定,「第二行」,你很可能要像
SELECT *
FROM (SELECT t.*,
rank() over (order by some_column) rnk
FROM table_name)
WHERE rnk = 2
得到的答案這是一個可惜的Oracle不提出這個錯誤,已經看到它很多。 –
確定,沒有與ROWNUM = 2行? – TcKs
是的,表中有2行。 – facebook
是的,我從http://stackoverflow.com/questions/3457370/select-rownum-from-salary-where-rownum-3 – facebook