列出一个表中不在另一个表中的所有项目

时间:2014-11-04 06:13:42

标签: sql join null

我想在数据库中有两个表来比较。一个是名为stock的库存清单,另一个是被称为商品的商品清单。我想列出从未订购的库存表中的所有库存(所以我基​​本上想要检查库存但不在物品中的任何物品)。我有一些困惑,因为股票包含两个键,即stock_num和manu_code(制造商的代码)。以下是我到目前为止的情况,我希望它是接近或至少朝着正确的方向前进。它目前返回一个没有错误的空列表。

select stock.stock_num, stock.manu_code, stock.description
from stock
        join items 
                on stock.stock_num = items.stock_num
                and stock.manu_code = items.manu_code
where items.stock_num and items.manu_code is null

2 个答案:

答案 0 :(得分:1)

使用LEFT OUTER JOIN

select stock.stock_num, stock.manu_code, stock.description
from stock
left outer join items 
  on stock.stock_num = items.stock_num
  and stock.manu_code = items.manu_code
where items.stock_num is null and items.manu_code is null

答案 1 :(得分:1)

试试这个

select stock_num ,manu_code from  stock
except 
select stock_num,manu_code from items

你可以得到哪些不在物品表

参考: Except