如何解决MySQL查询,历史值表中的最新值
| 我有一张有历史价值的桌子。每次更新一个值时,都会将该值的副本添加到由“ 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,如果有任何不同。
解决方法
SQLite?嗯,无法测试,请尝试以下操作:
SELECT value FROM your_table GROUP BY request_id ORDER BY modifier;
如果此查询有任何问题,请发布错误,我们将尝试修复。
,我的语法可能有些错误,但这应该为您指明正确的方向。
\"SELECT DISTINCT request_id FROM history_table ORDER BY modified\"
这只会获取每个request_id中的一个,因此不会重复。
,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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。