1

我对 sql 很陌生。实际问题要大得多。在以下情况下我需要信息。说我有两张桌子

成员表

MonthID  | UserID  | TeamID
-----------------------------
  1      |  1       | 6
  1      |  2       | 6
  1      |  3       | 6
  1      |  4       | 6

报告表

ID* |  MonthID  | UserID  | IsSend
-----------------------------------
 1  |    1      |    2     | False
 2  |    1      |    3     | True

我需要 ReportTable 中不存在的用户总数以及 IsSendValue 为 False 的用户,即 count = 3

是否可以在一个查询中做到这一点?如果不可能和可能的解决方案,请给出解释。

4

1 回答 1

4
SELECT COUNT(DISTINCT UserID)
FROM MemberTable
WHERE UserID NOT IN (SELECT UserID FROM ReportTable)
OR UserID IN (SELECT UserID FROM ReportTable WHERE IsSend=FALSE)

应该返回带有UserID1、2 和 4 的用户。实现相同结果的更简洁的查询是:

SELECT COUNT(DISTINCT UserID)
FROM MemberTable
WHERE UserID NOT IN (SELECT UserID FROM ReportTable WHERE IsSend=TRUE)
于 2012-04-09T09:02:49.700 回答