M2s*_*2sh 1 mysql sql timestamp greatest-n-per-group
在这张表中我有四列
id state_id state add_time
1 10 1 1385461144
2 12 3 1385461144
3 14 2 1385461144
4 12 5 1385461264
5 10 2 1385461264
Run Code Online (Sandbox Code Playgroud)
我想通过最后一个字段获取最新记录(add_time)
结果必须是这样的
id state_id state add_time
3 14 2 1385461144
4 12 5 1385461264
5 10 2 1385461264
Run Code Online (Sandbox Code Playgroud)
我发现这个问题获取最新时间戳mysql的记录 ,它使用两个选择查询(子查询).但我不想使用子查询.
有没有其他方法来获取最新记录?
有两种方法可以获得您正在寻找的结果.
左连接解决方案:
SELECT t1.* FROM t t1
LEFT JOIN t t2
ON t1.state_id = t2.state_id AND t1.add_time < t2.add_time
WHERE t2.add_time IS NULL
Run Code Online (Sandbox Code Playgroud)
小提琴这里.
子查询解决方案:
SELECT t1.* FROM t t1
JOIN (
SELECT state_id, max(add_time) add_time FROM t
GROUP BY state_id
) t2
ON t1.state_id = t2.state_id AND t1.add_time = t2.add_time
Run Code Online (Sandbox Code Playgroud)
小提琴这里.
两者都会输出:
| ID | STATE_ID | STATE | ADD_TIME |
|----|----------|-------|------------|
| 3 | 14 | 2 | 1385461144 |
| 4 | 12 | 5 | 1385461264 |
| 5 | 10 | 2 | 1385461264 |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3671 次 |
| 最近记录: |