2016-04-24 6 views
2

ITEMからMIBOMDにレコードを確認して挿入しようとしています。私はITEMテーブル内のアイテムID内の項目とpartidフィールドは、私は以下のコードを使用複数の条件を追加するには

MIITEMテーブルに存在する場合にのみ挿入したいが、私はメッセージ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

次の2つに1つの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

もう1つの方法はEXISTSです。

これは

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)) 
二回 Sub-Queryを使用して避けることができます