【问题标题】:SQL: exclude certain criteria from selectSQL:从选择中排除某些条件
【发布时间】: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 没有引用别名为 arpt_StockInventorySummary 似乎也很奇怪。
  • NOT EXISTS 中的查询确实返回值,无论是否有 departmentId = 'p'。我只需要排除此查询中的值,但我不确定它为什么会导致不返回...
  • 如果NOT EXISTS 查询没有返回任何行,则说明rpt_StockInventorySummary 表中没有行,其中DepartmentId 的值为'P'

标签: sql-server sql-server-2016


【解决方案1】:

查询中缺少的是:

and b.barcode = a.barcode

将其添加到不存在的查询中就可以了。

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2020-02-05
    相关资源
    最近更新 更多