添加最新结果的MySQL查询
我有两个MySQL表,希望从表2中选择值最高的结果,并将它们附加到表1中 表1包含ID、MSISDN(14位数字) 表2包含ID、MSISDN、字段2和日期 我想返回表1中所有MSISDN的列表,以及table2.field2和table2.date的结果,其中table2.date是匹配MSISDN的最大值添加最新结果的MySQL查询,mysql,max,Mysql,Max,我有两个MySQL表,希望从表2中选择值最高的结果,并将它们附加到表1中 表1包含ID、MSISDN(14位数字) 表2包含ID、MSISDN、字段2和日期 我想返回表1中所有MSISDN的列表,以及table2.field2和table2.date的结果,其中table2.date是匹配MSISDN的最大值 我该怎么做?我知道我需要使用MAX,但我不确定如何构造子查询来为table2.field添加正确的结果。通常,您可以通过 创建包含每个id的最长日期的子选择 将此子选择与原始表合并以返回
我该怎么做?我知道我需要使用MAX,但我不确定如何构造子查询来为table2.field添加正确的结果。通常,您可以通过
- 创建包含每个id的最长日期的子选择
- 将此子选择与原始表合并以返回附加列
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
通常,您可以通过
- 创建包含每个id的最长日期的子选择
- 将此子选择与原始表合并以返回附加列
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
谢谢你。你是说
MAX(date)作为date
还是MAX(MSISDN)作为MSISDN
?我需要每个MSISDN的最新日期,但需要该日期和MSISDN的匹配字段2。@MatthewPort-它应该是MAX(date)
。我已经纠正了我的错误。太好了,谢谢。我的查询需要几个小时才能运行(表2是9700万行),因此等待结果是否符合预期需要需要很长时间。即使有9700万行,正确的索引也不需要几个小时。谢谢。你是说MAX(date)作为date
还是MAX(MSISDN)作为MSISDN
?我需要每个MSISDN的最新日期,但需要该日期和MSISDN的匹配字段2。@MatthewPort-它应该是MAX(date)
。我已经纠正了我的错误。太好了,谢谢。我的查询需要数小时才能运行(表2是9700万行),因此等待结果是否符合预期需要很长时间。即使有9700万行,正确的索引也不需要数小时。