我有一个查询,选择最多登录的UID的前5位
我表现出这样的结果:
“一个名字”连接了457次,失败了124次
我的实际查询只获得“457”次,我不知道如何在同一查询中选择失败的登录信息。
我的数据库中有一个名为“pass”的字段。如果失败则值为0,如果正确则为1。
当前查询:
SELECT uid, COUNT(uid) AS cnt
FROM logins
GROUP BY uid
ORDER BY cnt DESC
LIMIT 5
数据库结构:
CREATE TABLE IF NOT EXISTS `logins` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`ip` varchar(15) NOT NULL,
`time` int(10) NOT NULL,
`passed` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1544 ;
你能帮我解决一下这个问题吗? 提前致谢
答案 0 :(得分:3)
SELECT uid, COUNT(uid) AS cnt, COUNT( IF( passed = 0, 1, NULL ) ) AS failed
FROM logins
GROUP BY uid
ORDER BY cnt DESC
LIMIT 5
答案 1 :(得分:0)
SELECT uid, COUNT(uid) AS cnt, (SELECT COUNT(uid) FROM logins WHERE passed=0) AS failed ...
您可以使用内部select语句来实现此目的。