我正在尝试检查并将记录从ITEM
插入MIBOMD
。我只想在MIITEM表中存在ITEM
表中的ItemID和partid字段中的项目时插入
我使用下面的代码,但是收到了此错误消息
Ms 4145,Level 15,State 1,Line 22 在预期条件的上下文中指定的非布尔类型的表达式,接近' OR'。
USE [MITESTCO]
GO
INSERT INTO MIBOMD(bomItem, bomRev, bomEntry, partId, lead)
SELECT ItemID, rev, bomEntry, partid, qty
FROM ITEM WHERE (partid OR ItemID) IN (SELECT ItemId FROM MIITEM);
答案 0 :(得分:3)
您需要将WHERE
子句从一个OR
条件拆分为两个。
USE [MITESTCO];
GO
INSERT INTO [MIBOMD]
([bomItem], [bomRev], [bomEntry], [partId], [lead])
SELECT [ItemID], [rev], [bomEntry], [partid], [qty]
FROM [ITEM]
WHERE [partid] IN (SELECT [ItemId] FROM [MIITEM])
OR [ItemID] IN (SELECT [ItemId] FROM [MIITEM]);
答案 1 :(得分:3)
另一种方法是使用EXISTS
。
这样可以避免使用Sub-Query
两次
INSERT INTO [MIBOMD]
([bomItem],[bomRev],[bomEntry],[partId],[lead])
SELECT [ItemID],[rev],[bomEntry],[partid],[qty]
FROM [ITEM] I
WHERE EXISTS (SELECT 1
FROM [MIITEM] M
WHERE M.ItemId IN ( I.partid, I.ItemID ))