首页 >数据库 >mysql教程 >如何使用 MySQL 的'MAX()”和'GROUP BY”高效检索每个唯一'rid”的最新'pid”?

如何使用 MySQL 的'MAX()”和'GROUP BY”高效检索每个唯一'rid”的最新'pid”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-01 00:16:09261浏览

How to Efficiently Retrieve the Latest `pid` for Each Unique `rid` Using MySQL's `MAX()` and `GROUP BY`?

MySQL 查询优化:MAX() 和 GROUP BY

问题:

给定一个包含 pid、timestamp 列的表、cost和rid,任务是检索每个唯一rid的最新行的pid,考虑到pid是自增主键。

原始查询:

以下查询检索最大时间戳和对应的 Rid 值,但没有正确返回最新的pid:

SELECT MAX(timestamp), rid, pid FROM theTable GROUP BY rid

解决方案:

为了有效地获取每次rid的最新pid,需要结合多种技术:

  1. 识别最大时间戳和对应的rid值:

    SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid
  2. 根据最大时间戳结果连接原始表:

    SELECT
        t.pid,
        t.cost,
        t.timestamp,
        t.rid
    FROM
        theTable AS t
    JOIN
        (SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid) AS maxt
    ON
        t.rid = maxt.rid AND t.timestamp = maxt.maxt

这个修改后的查询有效地检索了 pid、成本、时间戳,并删除了原始中每个唯一删除的最新行表。

以上是如何使用 MySQL 的'MAX()”和'GROUP BY”高效检索每个唯一'rid”的最新'pid”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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