SQL:从选择中排除某些条件
Posted
技术标签:
【中文标题】SQL:从选择中排除某些条件【英文标题】:SQL: exclude certain criteria from select 【发布时间】: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'
。
【参考方案1】:
查询中缺少的是:
and b.barcode = a.barcode
将其添加到不存在的查询中就可以了。
【讨论】:
以上是关于SQL:从选择中排除某些条件的主要内容,如果未能解决你的问题,请参考以下文章