SQL select 只有具有相同列值的行
SQL select only rows which have same column value
我需要一些提示..我得到了一个 table,看起来像这样:
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
为此 table 我想创建一个语句,它只会 return 水果
完全美味但不是部分美味的水果。
在这个例子中,只有 "cherry" 应该被 returned。
目前我刚收到这个声明:
SELECT * FROM fruits WHERE delicious <> 0
但这也会 return 苹果和香蕉。
我有点不知道如何存档并期待一些提示。
编辑:非常感谢您的回复。不幸的是,标志 "delicious" 是一个字符而不是整数
按 fruit
分组,只取具有 delicious = 0
零记录的那些
SELECT fruit
FROM fruits
GROUP BY fruit
HAVING sum(case when delicious = 0 then 1 else 0 end) = 0
这不是最好的方法,但可以在很多情况下使用。
SELECT DISTINCT fruit
FROM fruits
WHERE NOT fruit IN (
SELECT DISTINCT fruit
FROM fruits
WHERE delicious = 0
);
这也有效
SELECT fruit, sum(delicious) AS TotalScore, count(fruit) AS TotalFruits
FROM ForgeRock
GROUP BY fruit
HAVING TotalScore = TotalFruits
只需寻找最小美味值为 1 的那些
SELECT Id, Fruit FROM fruits
GROUP BY Id, Fruit
HAVING min(delicious) = 1
我需要一些提示..我得到了一个 table,看起来像这样:
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
为此 table 我想创建一个语句,它只会 return 水果 完全美味但不是部分美味的水果。 在这个例子中,只有 "cherry" 应该被 returned。
目前我刚收到这个声明:
SELECT * FROM fruits WHERE delicious <> 0
但这也会 return 苹果和香蕉。
我有点不知道如何存档并期待一些提示。
编辑:非常感谢您的回复。不幸的是,标志 "delicious" 是一个字符而不是整数
按 fruit
分组,只取具有 delicious = 0
SELECT fruit
FROM fruits
GROUP BY fruit
HAVING sum(case when delicious = 0 then 1 else 0 end) = 0
这不是最好的方法,但可以在很多情况下使用。
SELECT DISTINCT fruit
FROM fruits
WHERE NOT fruit IN (
SELECT DISTINCT fruit
FROM fruits
WHERE delicious = 0
);
这也有效
SELECT fruit, sum(delicious) AS TotalScore, count(fruit) AS TotalFruits
FROM ForgeRock
GROUP BY fruit
HAVING TotalScore = TotalFruits
只需寻找最小美味值为 1 的那些
SELECT Id, Fruit FROM fruits
GROUP BY Id, Fruit
HAVING min(delicious) = 1