筛选 table 以忽略特定行

Filter table to leave out specific rows

我有 table

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

现在我想列出没有指定领导者的每个项目名称,如下所示:

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

现在我只知道如何过滤所有项目名称 with 领导者,但不知道如何过滤他们!

感谢任何帮助:)

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

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

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

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

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