繁体   English   中英

返回表中仅使用一次的所有项目

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

数据库结构 SQL 文件

数据库数据 SQL 文件

在此处输入图片说明

你没有加入正确的列; 它应该是

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM