【问题标题】:SQL statement to find a key that doesn't contain a row with a value用于查找不包含具有值的行的键的 SQL 语句
【发布时间】:2015-12-08 02:41:06
【问题描述】:

我有一个表,每个键(员工编号)有多个行,如下所示。我正在尝试在其行集中找到具有特定技能的键。

我需要帮助来编写一个 Access SQL 查询,该查询仅标识具有项目管理和口语技能记录的员工。我不在乎他们是否有编码记录。

Employee #       Skill
5261            Coding
8328            Coding
8328            Speaking
8328            Project Management

应在输出中排除员工 5261,因为该员工没有列出项目管理和口语技能。 员工 8328 应包含在输出中,因为该员工具有项目管理和口语技能。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    只需对这两种技能进行基本的where 过滤,但计算此人拥有多少技能,并根据该数量进行过滤:

    SELECT [Employee #], count(*) AS cnt
    FROM yourtable
    WHERE Skill IN ('Speaking', 'Project Management')
    GROUP BY [Employee #]
    HAVING cnt = 2
    

    【讨论】:

      【解决方案2】:

      您可以使用以下查询获得所需的输出

      SELECT [Employee #] as Employee, count(*) AS cnt
      FROM sourcetable
      WHERE skill IN ('Speaking', 'Project Management')
      GROUP BY [Employee #]
      HAVING cnt > 1
      

      【讨论】:

      • 这看起来不错,我会稍微测试一下,如果它有效则接受它,但从逻辑上讲,它看起来不错。
      • @Jazzmine..这里的第二个查询会给你错误的结果。你应该选择 MarcB 的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多