我正在使用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/

10-10 04:09