SQL仅选择具有相同列值的行

时间:2015-04-15 16:27:55

标签: mysql sql db2

我需要一些提示..我有一张看起来像这样的表:

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;是一个字符而不是整数

4 个答案:

答案 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