我有一张有历史价值的表格。每次更新其中一个值时,该值的副本将添加到由“request_id”索引的此表中
我正在寻找离开以获取每个“request_id”的最新值,而无需检索整个表。
当前表:
ID | Modified | request_id | value
-------------------------------------
1 | 10 | 1 | "one"
2 | 15 | 1 | "two"
3 | 15 | 2 | "three"
4 | 18 | 1 | "fore"
5 | 25 | 3 | "five"
6 | 36 | 1 | "six"
结果表
ID | Modified | request_id | value
-------------------------------------
3 | 15 | 2 | "three"
5 | 25 | 3 | "five"
6 | 36 | 1 | "six"
如果它有任何区别,我正在使用PHP和SQLite。
答案 0 :(得分:3)
SQLite的? Hmz,无法测试但是试试这个:
SELECT value FROM your_table GROUP BY request_id ORDER BY modifier;
如果您对此查询有任何疑问,请发布错误,我们会尝试修复。
答案 1 :(得分:1)
我的语法可能略有错误,但这应该指向正确的方向。
"SELECT DISTINCT request_id FROM history_table ORDER BY modified"
这只会获取每个request_id中的一个,因此您不会获得重复项。
答案 2 :(得分:-1)
SELECT *
FROM test_table t1
WHERE t1.modified IN (SELECT max(Modified)
FROM test_table t2
WHERE t2.request_id = t1.request_id
GROUP By t2.request_id)
注意:这不是一种非常有效的方法,因为它具有相关的子查询。
编辑:没有相关性,对于PostgreSQL
SELECT * FROM test
WHERE (request_id, modified) IN (SELECT request_id, max(modified)
FROM test
GROUP BY request_id);