首頁 > 資料庫 > mysql教程 > 如何使用'ORDER BY”和'ROWNUM”高效地從 Oracle 表中檢索頂行?

如何使用'ORDER BY”和'ROWNUM”高效地從 Oracle 表中檢索頂行?

Susan Sarandon
發布: 2025-01-07 07:35:41
原創
993 人瀏覽過

How to Efficiently Retrieve the Top Row from an Oracle Table Using `ORDER BY` and `ROWNUM`?

高效使用Oracle ORDER BY 和ROWNUM

在Oracle 中,ROWNUM 偽列提供了一種從結果集中檢索特定行的方法他們的順序。但是,將 ROWNUM 與 ORDER BY 一起使用可能會導致意外結果。

要從表中檢索最新記錄,SQL Server 中通常使用以下SQL 查詢:

SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
登入後複製

但是,在Oracle 中,將此方法與ROWNUM 一起使用,如以下查詢所顯示:

SELECT *
FROM raceway_input_labo 
WHERE  rownum <= 1
ORDER BY t_stamp DESC
登入後複製

將檢索最舊的記錄而不是最新的記錄。這是因為在 Oracle 中,ROWNUM 在 ORDER BY 之前計算。

要使用Oracle 的ROWNUM 有效檢索最新記錄,請使用子查詢,如下所示:

SELECT * 
FROM 
    (SELECT *
     FROM raceway_input_labo 
     ORDER BY t_stamp DESC)
WHERE  rownum <= 1
登入後複製

此子查詢方法可確保ORDER先應用BY,從而產生所需的輸出。

或者,可以使用更通用的解決方案,可以在 SQL Server 和 SQL Server 中使用Oracle可以使用row_number()函數來實現:

select ril.*
from (select ril.*, row_number() over (order by t_stamp desc) as seqnum
      from raceway_input_labo ril
     ) ril
where seqnum = 1
登入後複製

以上是如何使用'ORDER BY”和'ROWNUM”高效地從 Oracle 表中檢索頂行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板