mysql - 使用共享主键检索 mysql 中的最后一行

标签 mysql sql shared-primary-key

我有一个表,其主键有 2 个值 - id 和时间戳。 该表包含每个 item_id 的多行,并且时间戳应该使其唯一。 考虑到此设置,我可以执行有效的查询吗?我想找到 item_id 的最新外观。 有什么想法吗?

CREATE TABLE IF NOT EXISTS table (
  item_id varchar(30) NOT NULL,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  ...
  PRIMARY KEY  (item_id, ts)
);

最佳答案

你的意思是MAX()吗?

SELECT item_id, MAX(ts) as TS
FROM `table`
GROUP BY item_id

但是,如果您想获取基于最新 item_id 的所有列,您可以将此查询放入子查询中并将其连接到表本身:

SELECT  a.*
FROM    `table` a
        INNER JOIN
        (
            SELECT item_id, MAX(ts) as TS
            FROM `table`
            GROUP BY item_id
        ) b ON a.item_id = b.item_id
                AND a.ts = b.TS

关于mysql - 使用共享主键检索 mysql 中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48579292/

相关文章:

php - Mysql为每个用户选择最旧的记录

mysql - FROM 语句使我的查询返回一个空列表

mysql - 在 MYSQL 表中查找重复项,其中数据位于 "title"-> "value"列以及其他相关表中的其他数据

mysql - 结合 LIKE 和 EXISTS?

sql - 在插入第三个表之前,如何使用触发器从两个表中获取日期?

MySQL 在指定列时抛出语法错误

mysql - 查询选择在日期范围之间有重复数据

entity-framework - EF6 无法为表拆分/共享主键 + 基类构建模型?

c# - 首先了解 Entity Framework 代码中的 ForeignKey 属性