[英]Return all items that are only used once in table
列出仅在一个配方中使用的所有成分的名称(1 列,46 行)
按道理我明白这个查询的方式是,我需要算IngredientID
中的Recipe_Ingredients
列以找到一个实例IngredientID
只出现一次。 但我的查询没有返回任何结果。
我试过用count(*)
和sum()
代替count(Ingredients.IngredientID)
sum()
。 但两者都没有返回结果。
select Ingredients.IngredientName
from Ingredients
join Recipe_Ingredients on Ingredients.IngredientID = Recipe_Ingredients.RecipeID
group by Ingredients.IngredientName
having count(Ingredients.IngredientID) = 1;
你没有加入正确的列; 它应该是
Ingredients.IngredientID = Recipe_Ingredients.IngredientID
进行此更改会给出 46 行的正确结果: 演示
请注意,像我一样准备 dbfiddle 会让其他人更容易回答您的问题。
仅获取 Recipe_Ingredients 表中的成分一次。
select * from Ingredients a where IngredientID in
(
select IngredientID
from Recipe_Ingredients
group by IngredientID
having count(*) = 1
)
select Ingredients.IngredientName
from Ingredients
join Recipe_Ingredients on Ingredients.IngredientID = Recipe_Ingredients.IngredientID
group by Ingredients.IngredientName
having count(Ingredients.IngredientID) = 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.