2009-10-30 84 views
1

我有两个表:一个'用户列表',它具有'等级'和'userID'列,以及一个登录表,每次用户登录时都会记录。登录表有一个'userID'列与'userID'关联。每次用户登录时,此登录表都会插入一行,因此如果用户登录三次,则会向该表中添加三行。MySQL基于多列的计数值

我需要运行一个查询,返回每个年级发生的唯一登录次数。

即:grade0 = 20个登录,grade1 = 30个登录

我有一种感觉,这是截然不同的组合,COUNT和GROUP BY,但我无法得到它的权利......

这查询是错误的:

SELECT DISTINCT(userID), COUNT(*) as count, u.grade FROM userlist as u, login as l WHERE u.userID = l.userID GROUP BY u.grade, u.userID 

它没有返回唯一的登录,但所有登录(即,如果用户在登录两次,他计算两次)。

回答

0
select u.grade 
    , count(distinct l.userid) 
    from userlist u 
    join login l 
    on l.userid = u.userid 
group 
    by u.grade 
+0

完美!这正是我所需要的。谢谢。 – Khuffie 2009-10-30 21:06:28