2012-08-15 74 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

相关问题