问题描述
||
我有一个数据库,每次用户登录到系统时都会添加一个新行。我想做的是首先进行查询,该查询通过散列的用户ID获取不同的条目。我能做的SELECT disTINCT似乎是我们的朋友。但是,在此之后,我仍然希望能够根据每个用户ID获得用户登录次数的计数。
例如,如果Max登录3次,Sally登录2次,那么我的数据库中将有5行。通过他们的用户ID运行SELECT disTINCT之后,只需给我一个Max和一个Sally用户ID。但是,获得这些信息之后,我希望能够创建存储以下信息的哈希映射:
最大值=> 3
莎莉=> 2
有没有一种使用纯sql或大多数纯sql的方法可以有效地实现这一点,还是我应该简单地从所有登录数据库行中取出并自己搜索和编译信息。我知道我可以用这种方法来做,但是感觉有点慢。谢谢
解决方法
您可以使用\“ GROUP BY \”运算符在SQL中执行此操作。例如:
SELECT user_id,count(*) FROM USERS GROUP BY user_id
,SELECT username,COUNT(*) AS LoginCount FROM logintable GROUP BY username
,SELECT login,COUNT(login) FROM yourtable GROUP BY login
,当然...
选择
hashed_user_id,count(*)
从
表名
按hashed_user_id分组
,如果您提供表格结构,答案可能更具体:
但是,这通常是带有group by的聚合函数,如下所示:
select user,count(user)
from access_log
group by user
,像您所说的那样进行计数是不必要的开销。我的建议是在用户表\'logincount \'中添加一个额外的字段,并在用户每次登录时+1。更快。