计数在同一查询中传递登录和登录失败?

时间:2011-08-04 14:47:47

标签: mysql sql

我有一个查询,选择最多登录的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 ;

你能帮我解决一下这个问题吗? 提前致谢

2 个答案:

答案 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语句来实现此目的。