簡體   English   中英

最大ID的日期:SQL / Oracle優化

[英]Date of max id: sql/oracle optimization

什么是更優雅的方法:

select date from table where id in (
  select max(id) from table);

當然有更好的方法...

您可以使用ROWNUM偽列。 在找到第一行之前,必須使用子查詢對結果進行排序:

SELECT date 
FROM (SELECT * FROM table ORDER BY id DESC)
WHERE ROWNUM = 1;

您可以通過以下方式在Oracle 9i及更高版本中使用子查詢分解

WITH ranked_table AS (
    SELECT ROWNUM AS rn, date
    FROM table
    ORDER BY id DESC
)
SELECT date FROM ranked_table WHERE rn = 1;

您可以使用自聯接,並找到不存在具有更大ID的行的位置:

SELECT date
FROM table t1
LEFT OUTER JOIN table t2
  ON t1.id < t2.id
WHERE t2.id IS NULL;

哪種解決方案最好取決於表中的索引以及數據的數量和分布。 您應該測試每個解決方案,以確定最適合,最快,最靈活的解決方案,等等。

select date from (select date from table order by id desc) 
where rownum < 2

假設您的ID是唯一的。

編輯 :使用子查詢+ rownum

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM