【问题标题】: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'