tsql - 在整个条目中插入带有案例的插入
问题描述
我正在创建一个要运行的脚本,它将把旧系统中的所有库存插入到新系统中。然而,旧系统有 1000 个错误的零件编号数据,我想在导入时忽略这些数据。
我已经尝试将整个选择封装在一个案例语句中并对该主题进行迭代。
这是一个相当大的数据集,所以为了简单起见,我将重要信息放入下面的代码中。
INSERT INTO [LOT_TBL]
(
Part_No
Total_Stock
)
--Ignore an insert if Part_No_Old NOT IN (SELECT Part_No from PART_TBL)
SELECT
Part_No_Old
Total_Stock
FROM OLD_ERP
WHERE Total_Stock > 0
新系统中的 PART_TBL 包含所有有效零件的列表,因此如果导入中的任何零件不匹配,请忽略并继续下一个零件。
解决方案
您可以过滤exists
:
insert into [lot_tbl] (part_no, total_stock)
select
part_no_old,
total_stock
from old_erp o
where
total_stock > 0
and exists (
select 1 from part_tbl p where p.part_no = o.part_no_old
)
或者,如果part_no
s 在 中是唯一的part_tbl
,您可以使用 a join
:
insert into [lot_tbl] (part_no, total_stock)
select
o.part_no_old,
o.total_stock
from old_erp o
inner join part_tbl p on p.part_no = o.part_no_old
where o.total_stock > 0
推荐阅读
- java - 如何通过 BufferedReader 读取多行输入?
- c++ - 为什么 dbghelp.h 的符号相关函数总是返回 126 错误代码?
- c - 通过 UNIX 域套接字接收未知数量的文件描述符
- java - 如何在 Flink 中对 Kafka Consumer 使用非键控状态?
- javascript - 在双方或仅在服务器端验证表单?
- linux - 删除第一行并用给定数据替换第一列数据
- python - Groupby.median:搜索每一行的增量(熊猫)
- c# - Xamarin - Sqlite.net 内存消耗非常高
- terraform - 如何对 Terraform 文件进行 lint
- uwp - 调整 UWP ContentDialog 宽度/高度