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