admin

未在运算符中运行时找不到记录

sql

我正在尝试从一张表中获取记录,但不包括某些记录(联盟中的订单号)。有人可以告诉我此查询有什么问题吗?运行后没有任何记录。

SELECT * 
FROM [dbo].[FMD15_18] 
WHERE [OrderNo] NOT IN  ((SELECT OrderNo 
                          FROM [dbo].[FMD15_18] 
                          WHERE [Item Description] Like '%AP%')
                          UNION ALL 
                          SELECT [OrderNo] FROM [dbo].[AP&C]
                         )

阅读 251

收藏
2021-07-01

共1个答案

admin

我会NOT EXISTS改用:

SELECT t.*
FROM [dbo].[FMD15_18] t
WHERE NOT EXISTS (SELECT 1 
                  FROM [dbo].[FMD15_18] t1 
                  WHERE t1.OrderNo = t.OrderNo AND 
                        t1.[Item Description] Like '%AP%') AND
      NOT EXISTS (SELECT 1 
                  FROM [dbo].[AP&C] a
                  WHERE a.OrderNo = t.OrderNo);

但是,我怀疑nullable当前查询存在一些问题。如果是这样,那么您需要配合IS NOT NULLin subquery

2021-07-01