Mysql 用于收集不同登录名的子SQL查询
我需要检索过去7天内已登录的用户列表以及他们已登录的计数,给出以下(为简单起见)表: 到目前为止,我已经能够连接这两个表并访问登录行,但是结果包含重复项且没有计数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
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