如何获取表中具有多个匹配行值的行数?

时间:2014-11-25 11:56:32

标签: mysql sql

基本上我在SQL中有一个LoginHistory表。 我想执行一个命令,该命令将返回特定日期的登录次数。 但是如果用户多次登录,我只想将其记录为一个登录。

所以我可以看到有一天登录了多少,而不是当天登录了多少次。

到目前为止,我有这个......

   select count(username) as TotalUserCountOnTheDay
   from dbo.LoginHistory
   where datediff(day,LoginDate, '2014-11-19') = 0

但是这会返回登录或所有用户的数量。 结果是15行,应该是4

我查询的表格: LoginHistory_Table

4 个答案:

答案 0 :(得分:1)

您想要计算不同的用户:

select count(distinct username) as TotalUserCountOnTheDay
from dbo.LoginHistory
where datediff(day,LoginDate, '2014-11-19') = 0;

答案 1 :(得分:0)

在这种情况下,也许 distinct 关键字可以帮助您。

答案 2 :(得分:0)

请使用此

select count(username) as TotalUserCountOnTheDay
   from dbo.LoginHistory
   where datediff(day,LoginDate, '2014-11-19') = 0
   GROUP BY username;

OR

select count(distinct username) as TotalUserCountOnTheDay
   from dbo.LoginHistory
   where datediff(day,LoginDate, '2014-11-19') = 0;

答案 3 :(得分:0)

您可以使用GROUP BY。实施例

SELECT COUNT(l.username) AS TotalUserCountOnTheDay
FROM dbo.LoginHistory  AS l
WHERE DATEDIFF(day, l.LoginDate, '2014-11-19') = 0
GROUP BY l.username

或者

 SELECT COUNT(l.username) AS TotalUserCountOnTheDay
    FROM dbo.LoginHistory  AS l
    WHERE l.LoginDate = '2014-11-19'
    GROUP BY l.username

它应该返回所选日期的每个用户名登录的计数。