我有一个包含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 ;
如果上次登录时间由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