2010-08-20 68 views
2

我有一個Oracle表格,裏面有兩列ID和START_DATE,我想運行一個查詢來獲取最近日期的記錄ID,最初我是這樣寫的:從查詢中獲取單行值的SQL查詢

select id from (select * from mytable order by start_date desc) where rownum = 1 

有沒有一個更清潔和有效的方式來做到這一點?我經常在SQL中遇到這種模式,最終創建一個嵌套查詢。

回答

1
SELECT id FROM mytable WHERE start_date = (SELECT MAX(start_date) FROM mytable) 

仍然是一個嵌套查詢,但更直接,也以我的經驗,更標準。

+0

更好,但我認爲OP想避免嵌套查詢。我會嘗試一些分析功能......但不知道這會工作......嗯...... – FrustratedWithFormsDesigner 2010-08-20 19:01:51

+1

這滿足了「獲取所有記錄與最近的開始日期」,OPs查詢沒有。 +1 – 2010-08-20 19:02:21

+0

謝謝!我並不真的想要避免嵌套查詢,我對SQL很陌生,所以我只想知道我在做什麼是常見的(或不好的)sql編碼實踐。 – wsb3383 2010-08-20 19:10:14

0

這看起來對我來說是一個非常乾淨和高效的解決方案 - 我不認爲你能比這更好,當然假設你有一個關於start_date的索引。如果你想要所有的ids的最新開始日期,那麼froadie的解決方案更好。