Mysql 不重复的每月SQL

Mysql 不重复的每月SQL,mysql,sql,Mysql,Sql,我有一个查询,我想返回下个月登录而不重复记录的用户数 如果用户已登录四月和五月,则仅显示四月的一条记录。这就是我目前所拥有的 SELECT DISTINCT (a.userid), EXTRACT(MONTH FROM a.loginTime) as month FROM login_audit a LEFT JOIN user u on u.userid = a.userid WHERE a.loginTime <= '2012-12-31 11:59:59' AND a.logi

我有一个查询,我想返回下个月登录而不重复记录的用户数

如果用户已登录四月和五月,则仅显示四月的一条记录。这就是我目前所拥有的

SELECT DISTINCT (a.userid), EXTRACT(MONTH FROM a.loginTime) as month 
FROM login_audit a LEFT JOIN user u on u.userid = a.userid 
WHERE a.loginTime <= '2012-12-31 11:59:59' 
AND a.loginTime >= '2012-01-01 00:00:00' 
GROUP BY month 
在这个场景中,用户1将在1月和2月同时出现。我想把那张唱片改成正片。要么是那样,要么就是积累起来了。像这样:

或者

userid    month
1        1
2        1
3        2


我希望这是有道理的。如果你想进一步澄清,请问我任何问题。非常感谢

看不到哪里需要表用户

对于第一个通缉方案:

SELECT 
  a.userid, 
  MIN(EXTRACT(MONTH FROM a.loginTime)) as month 
FROM login_audit a
WHERE a.loginTime <= '2012-12-31 11:59:59' AND a.loginTime >= '2012-01-01 00:00:00'
GROUP BY a.userid

看不到您需要表用户的位置

对于第一个通缉方案:

SELECT 
  a.userid, 
  MIN(EXTRACT(MONTH FROM a.loginTime)) as month 
FROM login_audit a
WHERE a.loginTime <= '2012-12-31 11:59:59' AND a.loginTime >= '2012-01-01 00:00:00'
GROUP BY a.userid

我会使用这种方法

SELECT DISTINCT (a.userid), EXTRACT(MONTH FROM a.loginTime) as month 
FROM login_audit a 
WHERE a.loginTime <= '2012-12-31 11:59:59' 
AND a.loginTime >= '2012-01-01 00:00:00' 

and not exists
(select userid
from login_audit
where login_audit.user_id = a.user_id
and carry on with date range for the following month
)

我会使用这种方法

SELECT DISTINCT (a.userid), EXTRACT(MONTH FROM a.loginTime) as month 
FROM login_audit a 
WHERE a.loginTime <= '2012-12-31 11:59:59' 
AND a.loginTime >= '2012-01-01 00:00:00' 

and not exists
(select userid
from login_audit
where login_audit.user_id = a.user_id
and carry on with date range for the following month
)

尝试使用GROUP BY a.userid。如果用户有四月、五月和六月,则只显示四月?如果他也有10月和11月,你想同时展示4月和10月吗?嗨@fthiella是的,这就是想法。如果用户已登录该年,则只需显示一次。请尝试使用“按.userid分组”。如果用户有四月、五月和六月,则只显示四月?如果他也有10月和11月,你想同时展示4月和10月吗?嗨@fthiella是的,这就是想法。如果一个用户已经登录了一年,它只需要出现一次。你是一个学者和绅士。非常感谢你!顺便说一句,我需要用户表按部门排序。我省略了这一点以缩短查询时间,但我明白你的意思。再次感谢。@sas1ni69赞美太多了,我脸红了;我以为table user也有类似的功能,但是。。。不在给定的样本中。不客气!你活该它真的帮助我们把解决方案变成了比原来更优雅的东西:你是一个学者和绅士。非常感谢你!顺便说一句,我需要用户表按部门排序。我省略了这一点以缩短查询时间,但我明白你的意思。再次感谢。@sas1ni69赞美太多了,我脸红了;我以为table user也有类似的功能,但是。。。不在给定的样本中。不客气!你活该它真的帮助我们把解决方案变成了比原来更优雅的东西:你好。非常感谢,但这是旧方法,速度稍慢,但确实有效。非常感谢。你好。非常感谢,但这是旧方法,速度稍慢,但确实有效。谢谢。