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

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

Mary-Kate Olsen
发布: 2025-01-01 00:16:09
原创
256 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板