我會在一個稍微不同的方式解決這個問題。你基本上在尋找沒有其他迭代大於它的那一行。至少有3種方式我能想到的要做到這一點:
SELECT
T1.iteration AS maxiteration,
T1.column
FROM
Table T1
WHERE
T1.id = 223652 AND
NOT EXISTS
(
SELECT *
FROM Table T2
WHERE
T2.id = 223652 AND
T2.iteration > T1.iteration
)
或者......
SELECT
T1.iteration AS maxiteration,
T1.column
FROM
Table T1
LEFT OUTER JOIN Table T2 ON
T2.id = T1.id AND
T2.iteration > T1.iteration
WHERE
T1.id = 223652 AND
T2.id IS NULL
或者......
SELECT
T1.iteration AS maxiteration,
T1.column
FROM
Table T1
INNER JOIN (SELECT id, MAX(iteration) AS maxiteration FROM Table T2 GROUP BY id) SQ ON
SQ.id = T1.id AND
SQ.maxiteration = T1.iteration
WHERE
T1.id = 223652
編輯:我沒有」在第一次讀取問題時不會看到ORA錯誤,並且它沒有被標記爲特定於Oracle。我認爲Oracle中的別名的語法和用法可能存在一些差異,因此您可能需要調整一些上述查詢。
Oracle錯誤告訴你它不知道什麼是最大化,因爲列別名在子查詢中還不可用。您需要通過表別名和列名稱來引用它,而不是我相信的列別名。確保在Oracle語法
你能後的完整的錯誤信息? – csl 2011-05-26 13:45:27
非常驚人的回覆,謝謝你們! – Nick 2011-05-26 15:16:08