我需要一些提示..我有一张看起来像这样的表:
id fruit delicious
1 apple 1
2 apple 0
3 apple 1
4 cherry 1
5 cherry 1
6 cherry 1
7 banana 0
8 banana 0
9 banana 0
对于这个表我想创建一个只返回水果的语句 完全美味,但不是部分美味的水果。 在这个例子中只有" cherry"应该退还。
目前我刚收到这个声明:
SELECT * FROM fruits WHERE delicious <> 0
但这也会让苹果和香蕉回归。
我有点无能为力地将其存档并期待一些提示。
编辑:非常感谢您的回复。不幸的是,国旗&#34;美味&#34;是一个字符而不是整数
答案 0 :(得分:2)
按fruit
分组,仅使用delicious = 0
SELECT fruit
FROM fruits
GROUP BY fruit
HAVING sum(case when delicious = 0 then 1 else 0 end) = 0
答案 1 :(得分:2)
只需寻找具有最佳美味价值1的那些
SELECT Id, Fruit FROM fruits
GROUP BY Id, Fruit
HAVING min(delicious) = 1
答案 2 :(得分:0)
这不是最好的方法,但可以在很多情况下使用。
SELECT DISTINCT fruit
FROM fruits
WHERE NOT fruit IN (
SELECT DISTINCT fruit
FROM fruits
WHERE delicious = 0
);
答案 3 :(得分:0)
这也有效
SELECT fruit, sum(delicious) AS TotalScore, count(fruit) AS TotalFruits
FROM ForgeRock
GROUP BY fruit
HAVING TotalScore = TotalFruits