假設我想用SQL(Sybase)執行此操作:使用最新的時間戳記查找記錄的所有字段。編寫獲取有關SQL max查詢結果的其他信息
一種方法是這樣的:
select * from data where timestamp = (select max(timestamp) from data)
這是一個有點傻,因爲它會導致兩個查詢 - 首先要找到最大的時間戳,然後找到該時間戳的所有數據(假設它是唯一的,是的 - 我有一個時間戳索引)。更重要的是,它似乎沒有必要,因爲max()已經找到了我感興趣的行,所以再次查找它是浪費的。
有沒有辦法直接訪問max()返回的行的字段?
編輯:所有答案我看到的基本上都是聰明的黑客 - 我一直在尋找做一些像MAX(字段1).field2的語法方式來訪問該行的字段2,最大字段1
* upvote * - 這是第一個也是正確的答案,但不適用於sybase – naumcho 2009-12-10 20:14:12
請注意,如果您有多個具有相同時間戳的行,則只會獲得一個,未定義哪一個你會得到。這取決於你的應用程序是否可能。 – 2009-12-10 20:14:26
TOP至少在版本12.5和可能從12版本的Sybase(ASE)中肯定可用。 – AdamH 2009-12-16 22:09:01