在MySQL中用Order By排序

1010

我正在使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章