【发布时间】:2018-11-15 00:36:15
【问题描述】:
我有一个问题,即选择了一些带有 od.[Bin Code] = 'HISS' 的订单,即使这个包含 NOT EXISTS 的查询大部分时间都有效。有人能解释一下这些订单是如何被选中的吗?我们该如何解决?
SELECT *
FROM [NAV2009].[dbo].[company\$sales line] AS line
JOIN [NAV2009].[dbo].[company\$sales header] AS Header
ON line.[document no_] = Header.no_
WHERE NOT EXISTS (SELECT *
FROM [NAV2009].[dbo].[company\$sales line] od
WHERE line.[document no_] = od.[document no_]
AND od.[bin code] = 'HISS')
AND Header.[website code] = 'DEFAULT'
AND [general comments] <> 'Picking'
【问题讨论】:
-
您的查询在我看来没问题。向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example 尝试在rextester.com 中创建样本
-
我们无法在没有基础数据的情况下验证您的查询,谁知道它是否按预期工作?只有你!
-
这通常是由于不一致的数据、最常见的空白、有时是控制字符或只是大小写问题(例如
'HIS'≠'HIS '≠' HIS'≠'his')。 -
@ThorstenKettner:至少尾随空格不会在 SQL Server 中导致此问题(根据标准 SQL 忽略尾随空格)
-
您需要找到一个“应该”被选中但没有被选中的示例,然后找出 SELECT 中的哪个子句是错误的 - 还是 JOIN 失败了?我不会只是进行更改以查看它是否会“消失”
标签: sql sql-server tsql not-exists