[英]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.