【问题标题】:Filter table to leave out specific rows过滤表以省略特定行
【发布时间】:2022-01-01 15:08:50
【问题描述】:

我有桌子

| WorkerID | ProjectName |  Role  |
|----------|-------------|--------|
|     1    |    Test     | Leader |
|----------|-------------|--------|
|     4    |    Test     | Worker |
|----------|-------------|--------|
|     2    |    Stuff    | Leader |
|----------|-------------|--------|
|     3    |    Proj     | Worker |

现在我想像这样列出没有指定 Leader 的每个 ProjectName:

| ProjectName |
|-------------|
|    Proj     |

现在我只知道如何过滤所有领导者的项目名称,但不知道如何以其他方式过滤它们!

任何帮助表示赞赏:)

【问题讨论】:

  • 你用的是什么数据库?
  • MySQL! @Zakaria

标签: mysql sql database group-by having


【解决方案1】:

一种方法是使用聚合和HAVING 子句中的条件:

SELECT ProjectName
FROM tablename
GROUP BY ProjectName
HAVING SUM(Role = 'Leader') = 0;

【讨论】:

  • 这行得通,非常感谢:) 很简单!
【解决方案2】:

(仅供参考:我对 PostgreSQL 很熟悉,所以我不确定这是否可以完全转移)

我会做一个 子查询 来识别具有领导者的项目,并在您的主查询中,做一个 WHERE 语句,选择所有 NOT IN 子查询的项目。

SELECT ProjectName
FROM Table
WHERE ProjectName NOT IN (
  SELECT ProjectName
  FROM Table
  WHERE Role = 'Leader'
  )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2015-06-19
    • 2011-12-01
    • 2012-01-12
    相关资源
    最近更新 更多