我的 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。
编辑
关于评论中的问题:如果你只想计算具有特定标志值的登录,你可以在 group by
之前添加 where flag = x
;如果您想对标志的每个值进行单独计数,则必须将该标志添加到 group by
和 select
中。
关于php - mysql连接两个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43316810/