我有一个表格可以捕获列serial
中的序列号,以及使用started
列捕获序列的日期我正在运行以下查询:
SELECT * FROM spin
WHERE `serial` in (
SELECT `serial` from spin group by `serial`
HAVING count(*) > 1
) ORDER BY started DESC
此查询正在执行的操作是选择序列号重复的所有时间并将其全部返回但我想更改此查询,以便仅返回每个多项的最新结果。
答案 0 :(得分:2)
这是获得你想要的东西的正确方法:
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
来获取匹配的记录。