我有两个数据表,顶部表是Products,底部表是Categories。
在产品表中,我的产品没有所有类别ID,例如3和7.我通过使用此声明找到了这个。
Select CategoryID
From Categories
Except
Select CategoryID
From Products
产生此结果
我想在上面的查询中包含categoryName和Description。我可以接受此查询并将表加入其中以获得我的预期输出吗?如果不是,我如何使用Outer Join
来实现我的最终结果,而不是Except
?
答案 0 :(得分:3)
我不知道您用什么数据库生成您向我们展示的结果,因为AFAIK MySQL不支持EXCEPT
。但你的问题是可以回答的;您可以在两个表之间执行LEFT JOIN
以得到相同的结果:
SELECT t1.CategoryID
FROM Categories t1
LEFT JOIN Products t2
ON t1.CategoryID = t2.CategoryID
WHERE t2.CategoryID IS NULL -- NULL indicates the Categories record did not match
答案 1 :(得分:1)
在SQL中您可以使用它。但这只是显示ID仅在Categories表中。它没有显示产品表
Select categoryName, Description
From Products
where id = ( Select CategoryID
From Categories
Except
Select CategoryID
From Products )
答案 2 :(得分:0)
SELECT CategoryID,CategoryName,Description
FROM Categories t1
where CategoryId not in(select p.CategoryID from Products p)