【问题标题】:How can I add Multiple WHERE condtions如何添加多个 WHERE 条件
【发布时间】:2016-04-24 00:25:55
【问题描述】:

我正在尝试检查并插入从 ITEMMIBOMD 的记录。我只想在 MIITEM 表中存在 ITEM 表中的 ItemID 和 partid 字段中的项目时插入

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

消息 4145,第 15 级,状态 1,第 22 行 在预期条件的上下文中指定的非布尔类型表达式,靠近“或”。

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

【问题讨论】:

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


    【解决方案1】:

    您需要将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]);
    

    【讨论】:

      【解决方案2】:

      另一种方法是使用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 )) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        • 1970-01-01
        • 2012-09-28
        • 2015-11-05
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        相关资源
        最近更新 更多