[英]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.