非重复的每月SQL

Has*_*ass 1 mysql sql

我有一个查询,其中我想返回已登录一个月的用户数量,而不会在下个月重复记录.

如果用户已登录4月和5月,则仅显示4月的一条记录.这就是我到目前为止所拥有的.

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 
Run Code Online (Sandbox Code Playgroud)

到目前为止,记录正在回归

userid    month
1        1
2        1
1        2
3        2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,用户1即将进入1月和Februray.我想要省略那条记录.无论是那个还是积累了.像这样:

userid    month
1        1
2        1
3        2
Run Code Online (Sandbox Code Playgroud)

要么

userid    month
1        1
2        1
1        2
2        2
3        2
Run Code Online (Sandbox Code Playgroud)

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

Rap*_*aus 5

看不到你需要表用户的地方......

对于第一个"通缉情景":

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
Run Code Online (Sandbox Code Playgroud)