mysql - 从以下查询中选择每个结果之一

标签 mysql sql

我有一个表,它捕获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/

相关文章:

MySQL:选择不同的统计数据

php - 如何在 php 排序之间插入水平规则

Mysql 不被识别为内部或外部命令

mysql - 使用 mysql 8 SHA2 对 dovecot 密码进​​行哈希处理

mysql - ALTER TABLE On 更新更改值

mysql - MySQL InnoDB如何实现Read Uncommitted隔离级别

mysql - 两个相似的 SQL 查询之间的巨大性能差异

mysql - SQL - 避免重复的列值

php - 在 5 的相关产品表中显示随机产品

sql - Oracle JDBC 忽略 CONCUR_UPDATABLE 结果集中的 SET CONSTRAINTS ALL DEFERRED