【发布时间】:2019-10-22 18:15:12
【问题描述】:
试图从查询中排除符合条件的一组值,但查询没有返回任何内容。
select *
from rpt_StockInventorySummary a
where a.[DepartmentId] ='P'
and not exists (
select *
from rpt_StockInventorySummary b
where b.Manufacturer = 'warrington'
and b.LowestGroupDescription = 'Boots, Leather, 14 Inch, Pro'
and b.Instock = 0
and b.barcode = a.barcode
)
order by a.SortOrder
编辑
我认为在 NOT EXISTS 中的查询末尾添加“and b.barcode = a.barcode”是缺少的。
【问题讨论】:
-
没有样本数据和预期结果,很难说。但是,如果它没有返回任何结果,则意味着
NOT EXISTS是返回行,或者没有DepartmentId的值为'P'的行。 -
你需要你的第二个并且不存在吗?您能否使用额外的过滤条件将
AND子句添加到第一个选择中。您的第二个选择与您的第一个不相关,因此未使用。 -
我建议先查看
NOT EXISTS,因为我怀疑如果您自己运行该查询,您将获得一个结果集。EXISTS没有引用别名为a的rpt_StockInventorySummary似乎也很奇怪。 -
NOT EXISTS 中的查询确实返回值,无论是否有 departmentId = 'p'。我只需要排除此查询中的值,但我不确定它为什么会导致不返回...
-
如果
NOT EXISTS查询没有返回任何行,则说明rpt_StockInventorySummary表中没有行,其中DepartmentId的值为'P'。
标签: sql-server sql-server-2016