之前或之后加入表格除外

时间:2017-02-01 04:24:46

标签: sql outer-join

我有两个数据表,顶部表是Products,底部表是Categories。

enter image description here

在产品表中,我的产品没有所有类别ID,例如3和7.我通过使用此声明找到了这个。

Select CategoryID
From Categories 
Except
Select CategoryID
From Products

产生此结果

enter image description here

我想在上面的查询中包含categoryName和Description。我可以接受此查询并将表加入其中以获得我的预期输出吗?如果不是,我如何使用Outer Join来实现我的最终结果,而不是Except

3 个答案:

答案 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)