如何编写SQL查询按用户最新timestamp获取对应多行数据
SQL查询方案
前提说明
你已经提前存储了各用户对应的最新timestamp值,不需要SQL自行计算每个用户的最大时间,仅需要匹配查询。
方案1:已有(user, 最新timestamp)键值对集合
直接用多字段IN匹配实现批量查询,写法如下:
SELECT id, testcase_id, `user`, `timestamp` FROM 你的表名 WHERE (`user`, `timestamp`) IN ( ('abbc', '2013-01-13 15:00:00'), ('pbbb', '2013-01-13 15:05:00'), ('dddd', '2013-01-13 15:05:00') -- 批量追加其他用户和对应最新timestamp的组合即可 );
注意:user和timestamp属于SQL保留关键字,用反引号包裹可避免语法报错。该写法天然支持同一timestamp对应多个用户的场景,匹配逻辑为用户+时间同时匹配,不会捞取其他用户同时间的错误记录。
方案2:用户最新timestamp存储在单独的表中
假设存储最新时间的表名为user_latest_ts,包含user、latest_timestamp两个字段,用关联查询实现:
SELECT t.id, t.testcase_id, t.`user`, t.`timestamp` FROM 你的表名 t INNER JOIN user_latest_ts u ON t.`user` = u.`user` AND t.`timestamp` = u.latest_timestamp;
以上两种方案针对你给出的样例数据,都会返回id为1、2、3的三行预期记录。
内容的提问来源于stack exchange,提问作者temp
相关产品推荐
相关产品推荐

