2012-08-15 52 views
0

這個答案從比爾Karwin質疑121387完美的工作對我來說..取其中有一列的最大值的行 - 與重複

「我看到很多人使用子查詢,否則供應商特定的功能做這一點,但我經常做這樣的查詢,而不通過以下方式子查詢它使用普通的,標準的SQL因此它應該在任何品牌的RDBMS工作

SELECT t1.* 
FROM mytable AS t1 
    LEFT OUTER JOIN mytable AS t2 
    ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date") 
WHERE t2.UserId IS NULL; 

換句話說:從T1,其中讀取該行沒有其他行存在相同的UserId和更大的日期。「

不過,我也需要在結果中包括從第三表中的列(想象與用戶名和UserPhoneNumber列另一個表)。感覺好像它應該是直截了當的,但它讓我感到瘋狂。任何幫助,將不勝感激。

回答

0

只需加入第三個表後LEFT JOIN:

SELECT t1.*, t3.* 
FROM mytable AS t1 
    LEFT OUTER JOIN mytable AS t2 
    ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date") 
JOIN myothertable AS t3 ON t1.UserId = t3.UserId 
WHERE t2.UserId IS NULL; 
+0

完美!我嘗試過這樣的事情,但當它不起作用(可能是我的錯字)時,我放棄得太快,並嘗試了其他的東西。謝謝! – user1601793 2012-08-16 13:39:17

相關問題