我只是想知道最新的記錄,如果以下兩個SQL語句有任何性能差異或者是他們本質上是相同的:選擇每人
從spouse
表中選擇一個人的最新配偶記錄(爲person_id,spouse_id, marriage_date)。
select *
from spouse
where (person_id, marriage_date) in (select person_id, max(marriage_date)
from spouse
group by person_id
)
select *
from spouse s1
where marriage_date = (select max(marriage_date)
from spouse s2
where s1.person_id = s2.person_id
)
這是報告一個共同的要求,例如,員工的工作最新,最高的教育等等等等,我想知道如果你喜歡上述表述過的一種方式其他以及爲什麼,或者如果還有其他更好的方法(在性能/可讀性方面)去了解這些獲取最新/最大的需求。
如果'person_id + marriage_date'不應該是唯一的 - 那麼你可能會得到錯誤的數據(如果某人已經在一天內結婚兩次;-))你的查詢不好 - – zerkms 2011-03-22 07:22:31
,避免在日期/時間字段進行比較。有很多與此相關的潛在時間炸彈,你可以谷歌。 – 2011-03-22 08:44:24
@Stephen - drivel。這就像說要避免編寫C#以防萬一你犯了一個錯誤。 – 2011-03-22 08:48:27