php - mysql连接两个不同的表

标签 php mysql left-join

我的 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 byselect 中。

关于php - mysql连接两个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43316810/

相关文章:

PHP 速记三元运算符 "?:"意外解析错误 ":"

PHP array_diff() 转换为字符串

python - 将元组转换为日期时间

mysql - 删除MySQL中的重复组合

mysql查询在左连接中搜索具有与列相关的条件

php - 前 30 天到期后,如何取消每月定期费用?

php - CentOS 6.4无法安装phpize

mysql - 如何为丢失主键和外键信息的数据库生成ERD/UML?

sql - TSQL 左连接且仅右起最后一行

PostgreSQL:LEFT JOIN 创建空白行