我有两个 MySQL 表,想从表 2 中选择最高值的结果并将它们附加到表 1。
表1包含ID,MSISDN(14位数字)
表2包含ID、MSISDN、field2、date
我想返回表 1 中所有 MSISDN 的列表以及 table2.field2 和 table2.date 的结果,其中 table2.date 是匹配 MSISDN 的最大值。
我该怎么做?我知道我需要使用 MAX,但我不确定如何构建子查询来为 table2.field 添加正确的结果。
最佳答案
通常,您可以通过
- 创建包含每个 id 的最大日期的子选择
- 将此子选择与您的原始表连接起来以返回额外的列
请注意,如果有两个相同的(MSISDN、日期)记录,它们都将被返回。
SQL Server
SELECT t1.MSISDN
, t2.field2
, t2.date
FROM Table1 AS t1
INNER JOIN Table2 AS t2 ON t2.MSISDN = t1.MSISDN
INNER JOIN (
SELECT MAX(date) AS date, MSISDN
FROM Table2
GROUP BY
MSISDN
) t2max ON t2max.MSISDN = t2.MSISDN
AND t2max.date = t2.date
关于MySQL 查询附加最新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565878/