SQL比较一个表

时间:2016-10-27 14:07:41

标签: mysql

我正在尝试查看最近一个月(2016-08-01)用户参与的当前运动,并计算上个月参加新运动的人数。

MONTH       |  ID   |  SPORT
_________________________________________
2016-07-01  |  12   |  Football
2016-08-01  |  12   |  Tennis

2016-07-01  |  28   |  Rugby
2016-08-01  |  28   |  Tennis

2016-07-01  |  31   |  Football
2016-08-01  |  31   |  Football

因此上面的例子将返回2的计数。

以下代码错误,但我不知道如何处理此

SELECT * FROM SPORTS WHERE currentmonth='2016-08-01' AND ID, SPORT NOT IN
(SELECT * FROM SPORTS WHERE currentmonth='2016-07-01')

1 个答案:

答案 0 :(得分:1)

如果每个用户每月只参加一项运动,您可以使用这种方法:

SELECT count(*) FROM(
  SELECT DISTINCT id, count(id) idno 
  FROM `mytbl`
  WHERE `month` BETWEEN '2016-07-01' AND '2016-08-01'
  GROUP BY id, sport) as subq
WHERE subq.idno=1

Here is a fiddle

我已经对月份进行了硬编码,但你应该用变量替换它们。