获取具有列的最大值的行 - 具有重复项

时间:2012-08-15 22:16:00

标签: mysql

Bill 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和更大日期的其他行。“

但是,我还需要在结果中包含第三个表中的列(想象另一个具有UserId和UserPhoneNumber列的表)。感觉好像它应该是直截了当但它让我疯了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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;