mysql:将3个查询合并为1-按[重复]分组

问题描述 投票:0回答:1

我有一个包含100个用户及其登录时间的数据库(1个用户有10000行)。所以我该如何选择3个用户(按其用户ID),然后仅获得他们上次登录的时间]

((id,userid,timestamp)

SELECT userid,timestamp FROM users WHERE userid='22'  ORDER BY id DESC LIMIT 1 ;
SELECT userid,timestamp FROM users WHERE userid='15'  ORDER BY id DESC LIMIT 1 ;
SELECT userid,timestamp FROM users WHERE userid='42'  ORDER BY id DESC LIMIT 1 ;

我也尝试过GROUP BY,但未显示每个用户的上一个时间戳记

SELECT userid,timestamp FROM users WHERE userid IN (22,15,42)' GROUP BY userid ORDER BY id DESC LIMIT 3 ;
mysql greatest-n-per-group
1个回答
1
投票

如果上次登录时间由ID确定,则:

SELECT u.userid, u.timestamp
FROM users u
WHERE u.userid IN (22,15,42) 
  AND u.ID = (SELECT MAX(ID) FROM users WHERE userid = u.userid)

或如果由timestamp确定:

SELECT userid, max(timestamp) timestamp
FROM users 
WHERE userid IN (22,15,42) 
GROUP BY userid 
© www.soinside.com 2019 - 2024. All rights reserved.