我有一个表,其中每一行都有一个类别和子类别.
我想选择除特定类别和子类别之外的所有行.
我的数据如下:
| 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有没有办法说哪里没有(这个和这个),因为我仍然想要“Fruit”类别,我仍然想要“Orange”子类别.
解决方法:
那么为什么不试试NOT呢?
SELECT *
FROM yourtable
WHERE NOT (category = 'Fruit' AND subcategory IN ('Orange', 'Apple'))
标签:sql,mysql,where
来源: https://codeday.me/bug/20190726/1548766.html