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

Sql 列出一个表中不在另一个表中的所有项目,sql,join,null,Sql,Join,Null,我想比较数据库中的两个表。一个是库存清单,称为库存,另一个是订购项目清单,称为项目。我想列出库存表中从未订购过的所有库存(因此我基本上想检查库存中但不在项目中的任何项目)。我有点困惑,因为stock包含两个键,即stock_num和manu_code(制造商代码)。下面是我到目前为止所做的,我希望这是接近或至少朝着正确的方向。它现在返回一个空列表,没有错误 select stock.stock_num, stock.manu_code, stock.description from stock

我想比较数据库中的两个表。一个是库存清单,称为库存,另一个是订购项目清单,称为项目。我想列出库存表中从未订购过的所有库存(因此我基本上想检查库存中但不在项目中的任何项目)。我有点困惑,因为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

使用左外连接:

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
试试这个

select stock_num ,manu_code from  stock
except 
select stock_num,manu_code from items
您可以获取项目表中未包含的项目

参考: