我正在使用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结果这是较早的日期。我想要最新的日期。用户的最后登录日期。
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'
关于mysql - 在MySQL中用Order By排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24892192/