我有一个表,其主键有 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/