我有一个表,它捕获serial
列中的序列号,以及使用started
列捕获序列号的日期,我正在运行以下查询:
SELECT * FROM spin
WHERE `serial` in (
SELECT `serial` from spin group by `serial`
HAVING count(*) > 1
) ORDER BY started DESC
此查询正在执行的操作是选择所有重复的序列号并将其全部返回,但我想更改此查询,以便它仅返回每个多个项目的最新结果。
最佳答案
这是获得你想要的东西的正确方法:
select s.*
from spin s join
(select serial, max(started) as maxs
from spin
group by serial
) ss
on s.serial = ss.serial and s.started = ss.maxs
order by started;
它在子查询中查找最近的日期,并使用 join
来获取匹配的记录。
关于mysql - 从以下查询中选择每个结果之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27906005/