【问题标题】:Mysql DISTINCT account_id and ORDER BYMysql DISTINCT account_id 和 ORDER BY
【发布时间】:2014-09-25 16:41:24
【问题描述】:

我想为每个 account_id 选择按日期时间 DESC 排序的最后一个(日期时间)record_version

SELECT * 
FROM `record_versions` 
WHERE record_id='26'
GROUP BY `account_id`
ORDER BY datetime DESC

它只返回一条 account_id 记录,但不是最后一条

【问题讨论】:

    标签: mysql sql join greatest-n-per-group


    【解决方案1】:

    您可以使用自联接来获得您想要的结果,内部查询将获得每个account_id 的最大datetime 列,并且它将使用最新的datetime 值加入外部查询的行

    SELECT 
      r.* 
    FROM
      `record_versions` r 
      JOIN 
        (SELECT 
          MAX(`datetime`) `datetime`,
          account_id 
        FROM
          record_versions 
        GROUP BY account_id) t 
        ON (
          r.account_id = t.account_id 
          AND r.datetime = t.datetime
        ) 
    WHERE r.record_id = '26' 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多