MySQL 查询附加最新结果

标签 mysql max

我有两个 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/

相关文章:

sql - 在选择不同行时按一个字段中的最小值进行分组

mysql - 'like' 内的 SQL 'exists' 条件

php - 填充下拉框不会显示数据库

mysql UPDATE 说列不能为空。为什么它是空的?

mysql - laravel 与 json 列的关系

mysql - 存储在 varchar 字段中的整数值,在排序时给出不同的结果

Python从二维列表中删除元素

php - 使用链接连接数据库中的两个页面

python - 从整数列表中过滤最多 20 个值

linux - 使用linux查找数据文件中两个字符串之间的最小值和最大值