首页 > 解决方案 > 如何选择两列不等于值的行?

问题描述

我有一个表,其中每一行都有一个categorysubcategory

我想选择所有行,除了特定的categorysubcategory.

我的数据如下所示:

| category | subcategory |
|----------|-------------|
| Color    | Orange      |
| Fruit    | Apple       |
| Fruit    | Orange      |
| Fruit    | Banana      |

我希望我的结果看起来像这样:

| category | subcategory |
|----------|-------------|
| Color    | Orange      |
| Fruit    | Banana      |

这是我尝试过的,但显然不起作用:

SELECT *
FROM table
WHERE
    (category <> 'Fruit' AND subcategory = 'Orange') and
    (category <> 'Fruit' AND subcategory = 'Apple')

我似乎无法理解如何让它发挥作用。SQL 是否有办法说where not (this and this),因为我仍然想要“水果”类别并且我仍然想要“橙色”子类别。

标签: mysqlsqlwhere

解决方案


那么为什么不试试NOT呢?

SELECT *
FROM yourtable
WHERE NOT (category = 'Fruit' AND subcategory IN ('Orange', 'Apple'))

推荐阅读