首页 >数据库 >mysql教程 >如何从表中选择最近的 3 条不同记录?

如何从表中选择最近的 3 条不同记录?

Linda Hamilton
Linda Hamilton原创
2024-12-01 04:59:09719浏览

How to Select the 3 Most Recent Distinct Records from a Table?

选择最近的不同记录

您的查询旨在从表中检索 otheridentifier 列中的值不同的三个最新记录。然而,当前使用 GROUP BY 和 LIMIT 的方法会产生意想不到的结果。

让我们检查一下这个问题。 GROUP BY 操作将具有相同 otheridentifier 的行组合在一起。由于排序发生在分组之后,因此不一定会选择每个组的最新记录。

使用子查询的解决方案

要解决此问题,可以使用子查询来识别每个不同的其他标识符的最新记录。然后在主查询中使用此信息来选择所需的记录。

以下查询实现此目的:

SELECT *
FROM `table`
WHERE `id` = (
    SELECT `id`
    FROM `table` as `alt`
    WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
    ORDER BY `time` DESC
    LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3

解释:

  • 子查询获取每条唯一的最新记录的id otheridentifier。
  • 主查询然后使用此 id 从原始表中检索相应的记录。
  • 记录按时间降序排序,最近的 3 条记录受 LIMIT 3 限制。

使用这种方法,查询将返回预期的结果:ids 5、4和2,代表最近的三个具有不同 otheridentifier 值的记录。

以上是如何从表中选择最近的 3 条不同记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn