我的 MySql 数据库中有两个表:
user
- sid
- userid
- username
log
- sid
- userid
- login_time
您可以猜到,日志表中的记录比用户表中的记录多得多。我正在使用 php 以表格格式在我的网站上显示这些记录,如下所示。
no | userid | username | number of login |
1 | inzo | harvey | 233 |
2 | chae | schmidts | 433 |
3 | hibro | swainy | 12 |
要获取每个用户的登录次数,我可以在 for 语句中发送另一个查询。但它会消耗资源并最终使服务器变慢。
我可以在一个单一的连接查询中得到这个结果吗?
是的,您可以,您必须使用计数每个用户的登录名 group by
select t1.userid, t1.username, count(t2.sid)
from user t1
left join
log t2
on t1.userid = t2.userid
group by t1.userid, t1.username
在left join
确保您没有登录,用户将仍然被退回,机智0作为计数。
编辑
关于评论中的问题:如果您只想计算具有特定标志值的登录,您可以where flag = x
在group by
;之前添加;如果要为标志的每个值单独计数,则必须将该标志添加到group by
和select
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句