【发布时间】:2014-12-20 14:09:45
【问题描述】:
假设我有一张这样的桌子
CREATE TABLE events (
id INT,
sensor INT,
event_type INT,
time datetime
);
INSERT INTO events VALUES (0,2,4,'2012-06-08 12:13:14');
INSERT INTO events VALUES (1,3,4,'2012-06-08 13:13:14');
INSERT INTO events VALUES (2,2,4,'2012-06-08 12:15:14');
INSERT INTO events VALUES (3,1,6,'2012-06-08 15:13:14');
检索传感器添加的最新事件的“最佳”方法是什么?所以结果会是这样的(注意显示的是 id 2 而不是 id 0,因为 id 2 是最新的:
ID sensor
3 1
1 3
2 2
我写了一个这样的选择,但是还有其他方法吗?或者更简单的方法来归档它?
SELECT id,time,sensor,event_type
FROM events s1
WHERE time = (
SELECT MAX(time) FROM events s2 WHERE s1.sensor = s2.sensor
)
ORDER BY time DESC
谢谢!
【问题讨论】:
-
如果你在最后使用 LIMIT 子句,而没有 WHERE 子句怎么办?也许我理解你的问题是错误的。
-
有不同的写法,但不一定更简单
标签: mysql sql group-by timestamp