【问题标题】:Exclude a group when one row match in another table当另一表中的一行匹配时排除组
【发布时间】:2014-11-13 10:58:42
【问题描述】:

我有两张桌子:

第一个叫做“card”,有一列“id”。

| id |
| 1  |
| 2  |
| 3  |
| .. |

第二个表名为“waste”,有两列“card_id”和“waste_type”。

| card_id | waste_type |
|   1     |     1      |
|   1     |     3      |
|   2     |     2      |
|   2     |     1      |

我只想选择没有waste_type = 2的卡片

查询应如下所示:

SELECT c.id FROM card c
JOIN waste w
ON c.id = w.card_id
WHERE waste_type <> 2

我想要这个结果:

id
1

但我明白了:

id
1
2

我该怎么做?提前非常感谢您!

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您应该为此使用不存在的子句。

    select c.id
    from card c
    where not exists (select null from waste w
                      where w.card_id = c.id
                      and w.waste_type = 2)
    

    根据您的查询,我猜您宁愿检索

    1
    1
    2
    

    【讨论】:

    • 正是我要找的!非常感谢!
    猜你喜欢
    • 2011-06-25
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多