【问题标题】:Excluding unique ID in a query if at least one criteria is met如果至少满足一个条件,则在查询中排除唯一 ID
【发布时间】:2018-04-20 15:27:01
【问题描述】:

我遇到了这个问题,我不确定如何解决。

情况如下:我想获取所有未完成调查的个人的列表。但是,某人可以开始/完成多项调查。

因此,我想要未完成至少一项调查的个人列表。

这是我的查询的样子,以获取调查不完整的人员列表:

SELECT Survey.UserID, Survey.Fullname

FROM [...]

WHERE Survey.SurveySubmitted = 0    -- 0 = Unsubmitted, 1 = submitted

现在这就是数据库的样子

UserID            Fullname              SurveySubmitted
1                 John Smith            0
2                 Jane Doe              1
3                 Tom Glass             0
3                 Tom Glass             1

现在上面的查询将同时选择 John Smith 和 Tom Glass。但是,由于 Tom Glass 已经完成了至少一项调查,因此应该将他排除在外。

有什么想法可以继续吗?它很可能需要另一个 SELECT 中的 SELECT,但我无法想象它。

【问题讨论】:

    标签: mysql sql reporting-services


    【解决方案1】:

    您可以检查不在已提交/完成的用户中的用户

    select Survey.UserID, Survey.Fullname 
    from [.....]
    where UserID NOT IN (
      SELECT Survey.UserID, Survey.Fullname
        FROM [...]
        WHERE Survey.SurveySubmitted = 1
    )
    

    【讨论】:

      【解决方案2】:

      您应该按照唯一标识用户/调查组合的任何内容进行分组,然后将已提交的调查数量相加。然后,您可以使用having 子句过滤掉 > 0 的行:

      select *
      from Survey 
      group by UserId, FullName
      having sum(SurveySubmitted) = 0;
      

      SQLFiddle Example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 2021-12-26
        • 2022-09-28
        • 1970-01-01
        相关资源
        最近更新 更多