0

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 列的表)。感觉好像它应该是直截了当的,但它让我发疯了。任何帮助,将不胜感激。

4

1 回答 1

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;
于 2012-08-15T22:37:48.057 回答