从以下查询中选择每个结果中的一个

时间:2015-01-12 15:59:46

标签: mysql sql

我有一个表格可以捕获列serial中的序列号,以及使用started列捕获序列的日期我正在运行以下查询:

 SELECT * FROM spin
            WHERE `serial` in (
            SELECT `serial` from spin group by `serial`
            HAVING count(*) > 1
            ) ORDER BY started DESC

此查询正在执行的操作是选择序列号重复的所有时间并将其全部返回但我想更改此查询,以便仅返回每个多项的最新结果。

1 个答案:

答案 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来获取匹配的记录。