筛选 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'
)
我有 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'
)