了解条件SQL连接,请参阅说明

时间:2012-04-09 08:52:10

标签: sql sql-server database sql-server-2005

我对sql很新。实际问题要大得多。 我需要以下案例中的信息。说我有两个表,如

MemberTable

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

AND

ReportTable

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

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

是否可以在一个查询中执行此操作?如果无法解决,请说明。

1 个答案:

答案 0 :(得分: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)

应该返回UserID 1,2和4的用户。实现相同结果的更简洁的查询是:

SELECT COUNT(DISTINCT UserID)
FROM MemberTable
WHERE UserID NOT IN (SELECT UserID FROM ReportTable WHERE IsSend=TRUE)