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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL NOT EXIST在查询结果中返回重复值相关的知识,希望对你有一定的参考价值。

嗨似乎从这个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);
答案

正如@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。

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

以上是关于SQL NOT EXIST在查询结果中返回重复值的主要内容,如果未能解决你的问题,请参考以下文章

sql SQL Server和Oracle SQL的SQL语法的一些示例

sql MS SQL动态SQL

sql sql6.sql

sql sql5.sql

sql SQL - 测试1..sql

sql sql.sql