我正在使用mysql作为数据库,并且我有一个类似下面的表格。
CREATE TABLE IF NOT EXISTS `logins` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`userid` varchar(255) NOT NULL,
`date` varchar(255) NOT NULL,
`status` varchar(255) NOT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=346 ;
我想按顺序对mysql结果进行排序。问题是当我使用此sql时,它仅需要日期的第一个记录。这是较早的日期。我想要最新的日期。用户的上次登录日期。
SELECT * FROM `logins` WHERE `status`='valid' GROUP BY `userid` ORDER BY `date` DESC
有什么建议?
为此,您可以使用子查询获取每个用户ID的最新记录,然后将其加入登录表以获取其余详细信息
SELECT logins.*
FROM logins
INNER JOIN
(
SELECT userid, MAX(`date`) AS max_date
FROM `logins`
WHERE `status` = 'valid'
GROUP BY `userid`
) sub0
ON logins.userid = sub0.userid
AND logins.`date` = sub0.max_date
WHERE `status` = 'valid'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句