2016-04-24 68 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))