查找另一个 table 中不存在的 ID
Find ID which doesn't exist from another table
正在研究SQL,不知道过滤数据的方法是什么
例如,我有两个 tables:
Reference_OrderTable
:
- 订单号
- 项目
- 价格
OrderTable
:
- 订单号
- 项目
- 价格
Reference_Ordertable
: 这个table有所有类型的订单。
OrderTable
:这是实际订单table,我们按客户订单存储。
我正在寻找 OrderTable
中丢失的 orderID
。
例如:
Reference_Ordertable:
订单编号:1、2、3、4、5、6、7、8
订单表:
订单编号:1、3、4、5、7
我想找到缺少的部分,例如 OrderID
: 2, 6, 8 因为如果我们与 Reference_Ordertable
比较,OrderTable
缺少 2,6,8。
我正在考虑使用 Right Join 方法。但是,Right Join 包含公共数据,并且不搜索缺失部分。我们如何从另一个 table?
中过滤缺失的数据
谢谢!
您可以在下面尝试。
使用 EXCEPT
select OrderID from reference_OrderTable
EXCEPT
select OrderID from OrderTable
使用加入
select r.OrderID from reference_OrderTable r
LEFT JOIN OrderTable o ON o.OrderID = r.OrderID
WHERE o.OrderID IS NULL
使用子查询
select OrderID from reference_OrderTable
where OrderID NOT IN (select OrderID from OrderTable)
正在研究SQL,不知道过滤数据的方法是什么
例如,我有两个 tables:
Reference_OrderTable
:
- 订单号
- 项目
- 价格
OrderTable
:
- 订单号
- 项目
- 价格
Reference_Ordertable
: 这个table有所有类型的订单。OrderTable
:这是实际订单table,我们按客户订单存储。
我正在寻找 OrderTable
中丢失的 orderID
。
例如:
Reference_Ordertable:
订单编号:1、2、3、4、5、6、7、8
订单表:
订单编号:1、3、4、5、7
我想找到缺少的部分,例如 OrderID
: 2, 6, 8 因为如果我们与 Reference_Ordertable
比较,OrderTable
缺少 2,6,8。
我正在考虑使用 Right Join 方法。但是,Right Join 包含公共数据,并且不搜索缺失部分。我们如何从另一个 table?
中过滤缺失的数据谢谢!
您可以在下面尝试。
使用 EXCEPT
select OrderID from reference_OrderTable
EXCEPT
select OrderID from OrderTable
使用加入
select r.OrderID from reference_OrderTable r
LEFT JOIN OrderTable o ON o.OrderID = r.OrderID
WHERE o.OrderID IS NULL
使用子查询
select OrderID from reference_OrderTable
where OrderID NOT IN (select OrderID from OrderTable)