Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于收集不同登录名的子SQL查询_Mysql_Sql - Fatal编程技术网

Mysql 用于收集不同登录名的子SQL查询

Mysql 用于收集不同登录名的子SQL查询,mysql,sql,Mysql,Sql,我需要检索过去7天内已登录的用户列表以及他们已登录的计数,给出以下(为简单起见)表: 到目前为止,我已经能够连接这两个表并访问登录行,但是结果包含重复项且没有计数 SELECT u.name, e.created_at FROM event_logs e INNER JOIN users u ON e.user = u.id WHERE e.event = "login" AND DATE(e.created_at) >= DATE_ADD(CURDATE(), INTERVAL -7

我需要检索过去7天内已登录的用户列表以及他们已登录的计数,给出以下(为简单起见)表:

到目前为止,我已经能够连接这两个表并访问登录行,但是结果包含重复项且没有计数

SELECT u.name, e.created_at
FROM event_logs e
INNER JOIN users u ON e.user = u.id
WHERE e.event = "login" 
AND DATE(e.created_at) >= DATE_ADD(CURDATE(), INTERVAL -7 DAY)
ORDER BY u.id;

因此,我尝试进行子查询,但运行
select*FROM()登录返回语法错误:

首先,值应该用单引号括起来。您也不需要子查询来计算用户登录的实例数。您可以直接使用
COUNT()
groupby

SELECT u.name, 
       COUNT(e.created_at) AS TOTAL_COUNT
FROM   event_logs e
       INNER JOIN users u ON e.user = u.id
WHERE  e.event = 'login'
       AND DATE(e.created_at) >= DATE_ADD(CURDATE(), INTERVAL -7 DAY)
GROUP  BY u.name

您必须使用
分组依据
。你可以在这里找到大量展示
分组方式
功能的帖子。
SELECT u.name, 
       COUNT(e.created_at) AS TOTAL_COUNT
FROM   event_logs e
       INNER JOIN users u ON e.user = u.id
WHERE  e.event = 'login'
       AND DATE(e.created_at) >= DATE_ADD(CURDATE(), INTERVAL -7 DAY)
GROUP  BY u.name