如何添加多个WHERE条件

时间:2016-04-24 00:25:55

标签: sql-server sql-server-2008 sql-insert

我正在尝试检查并将记录从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);

2 个答案:

答案 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 ))