SQL NOT EXIST在查询结果中返回重复值

问题描述 投票:0回答:1

嗨似乎从这个sql代码中得到重复它假设通过使用以下作为键Keyorderstatus来查找不在订单数据上的BO数据的记录我的所有查询结果都已经在订单数据上,如何解决这个问题?

SELECT Keyorderstatus, 
OrderNumber, 
PartsNo, 
HoldType, 
ShiptoCode, 
BackOrderQty, 
OrderStatusCode
FROM [BO Data]
WHERE NOT EXISTS (SELECT *
                  FROM [BO Data]
                  WHERE [BO Data].Keyorderstatus = [Order Data].Keyorderstatus
                 ) 
AND [BO Data].OrderStatusCode="AWAITING_SHIPPING"
AND NOT EXISTS (SELECT *
                FROM [Order Data]
                WHERE Keyorderstatus IS NULL);
sql duplicates access not-exists
1个回答
0
投票

正如@dfundako所说 - 很难在没有数据表的情况下进行检查。

我认为这个SQL应该做你想做的事情:

SELECT        [BO Data].KeyOrderStatus
            , OrderNumber
            , PartsNo
            , HoldType
            , ShipToCode
            , BackOrderQty
            , [BO Data].OrderStatusCode
FROM        [BO Data] LEFT JOIN [Order Data] ON [BO Data].KeyOrderStatus <> [Order Data].KeyOrderStatus
WHERE       [BO Data].OrderStatusCode = 'AWAITING SHIPPING'
GROUP BY    [BO Data].KeyOrderStatus
            , [BO Data].OrderStatusCode  

检查[Order Data].KeyOrderStatus IS NULL可能没有必要,因为(我假设)[BO Data].KeyOrderStatus是主键,因此它必须始终包含一个值,并且SQL检查它是否与[Order Data]中的值不同 - 如果它是NULL,它将与PK。

编辑:我添加了与联接无关的其他字段。你必须将这些分组。

© www.soinside.com 2019 - 2024. All rights reserved.