考虑一个场景,其中您有一个包含时间戳、成本、rid 等列的 MySQL 表您的目标是检索每个唯一的 Rid 的最新行的 pid。
您尝试使用以下命令进行此操作query:
SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
但是,返回的 pid 值与最大时间戳不对齐。这是因为 GROUP BY 考虑了 SELECT 子句中的所有列,并为每个组选择第一个匹配的行。
要纠正这个问题,我们需要确定每个组的 Rid 和最大时间戳。我们可以使用子查询来完成此操作:
SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid
此查询的结果将如下所示:
rid | ts -----|----- 1 | 2011-04-14 01:06:06 2 | 2011-04-14 01:05:41 3 | 2011-04-14 01:14:14
现在,我们可以使用 rod 将原始表与此子查询连接起来和时间戳,以检索所需的 pid 值:
SELECT theTable.pid, theTable.cost, theTable.timestamp, theTable.rid FROM theTable INNER JOIN ( SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid ) AS maxt ON (theTable.rid = maxt.rid AND theTable.timestamp = maxt.ts)
此查询的结果将为您提供 pid、成本、时间戳和删除每个唯一删除的最新行。
以上是如何获取 MySQL 中每个唯一 RID 的最新行 PID?的详细内容。更多信息请关注PHP中文网其他相关文章!