过滤表以省略特定行
Posted
技术标签:
【中文标题】过滤表以省略特定行【英文标题】: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 【参考方案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'
)
【讨论】:
以上是关于过滤表以省略特定行的主要内容,如果未能解决你的问题,请参考以下文章