2016-04-24 81 views
2

我正在尝试将记录从ITEM更改为MIBOMD。我想插入只有当项目ID项目和PARTID字段ITEM表中MIITEM表中存在如何添加多个WHERE条件

我用下面的代码,但我得到这个错误消息

消息4145,级别15,状态1,行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); 

回答

3

你需要从一个OR状态打出WHERE条款为两个。

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]); 
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))