2015-04-15 6 views
1

мне нужно несколько советов .. Я получил таблицу, которая выглядит следующим образом:SQL выбрать только те строки, которые имеют одинаковое значение столбца

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 

Для этой таблицы я хочу создать заявление, которое будет возвращать только плоды, полностью вкусно, но не плоды, которые являются частично вкусными. В этом примере должна быть возвращена только «вишня».

В настоящее время я только что получил это заявление:

SELECT * FROM fruits WHERE delicious <> 0 

, но это также будет возвращать яблоко и банан.

Я немного незнакомец, как я мог архивировать это и с нетерпением жду некоторых намеков.

EDIT: Большое спасибо за ваши ответы. К сожалению, флаг «вкусный» является символом, а не целое

ответ

2

Группы по fruit и принимать только те, которые имеют нулевые записи с delicious = 0

SELECT fruit 
FROM fruits 
GROUP BY fruit 
HAVING sum(case when delicious = 0 then 1 else 0 end) = 0 
+1

Nice инверсии логики, хотя должен признать, пришлось читать дважды. – StuartLC

+0

Большое спасибо за ваш ответ. Я приложил восхитительный к int, и это сработало :) – fhuschka

0

Это не самым лучшим способом, но можно использовать во многом ситуации.

SELECT DISTINCT fruit 
FROM fruits 
WHERE NOT fruit IN (
    SELECT DISTINCT fruit 
    FROM fruits 
    WHERE delicious = 0 
); 
0

Это также работает

SELECT fruit, sum(delicious) AS TotalScore, count(fruit) AS TotalFruits 
FROM ForgeRock 
GROUP BY fruit 
HAVING TotalScore = TotalFruits 
2

Просто найдите те, которые имеют мин вкусную значение 1

SELECT Id, Fruit FROM fruits 
GROUP BY Id, Fruit 
HAVING min(delicious) = 1