以下是我拥有的数据示例:
-----------------------------------
ID | Item | Value
1 | Carrot | 0
2 | Carrot | 1
3 | Peas | 1
4 | Peas | 2
5 | Peas | 3
6 | Salad | 0
7 | Salad | 3
8 | Salad | 5
9 | Corn | 0
-----------------------------------
如果符合以下条件,我想进行查询,其中显示值为0的行:
或者另一种说法是,如果出现以下情况,他们不应该出现在结果中:
请注意,对(item,value)在我的数据中是唯一的。
因此,对于数据样本,查询结果应该是这样的(只有第一行消失):
-----------------------------------
ID | Item | Value
2 | Carrot | 1
3 | Peas | 1
4 | Peas | 2
5 | Peas | 3
6 | Salad | 0
7 | Salad | 3
8 | Salad | 5
9 | Corn | 0
-----------------------------------
最好和最有效的方法是什么?
答案 0 :(得分:3)
您必须按项目对数据进行分组,因此有一种可能性
SELECT ID, Item, Value
FROM data
WHERE Value <> 0
OR Item IN
(SELECT Item FROM data
GROUP BY Item
HAVING COUNT(*) <> 2);