SQL查询选择语法

jk9hmnmh  于 2022-09-18  发布在  Java
关注(0)|答案(1)|浏览(151)

假设我有一个表,其中包含列Customer和JOB。

我有几行:

客户1、作业1
客户1,作业2
客户1,工单3
客户2,作业1
客户2、作业2
客户2、作业3
客户3,作业1
客户3,作业2
客户3、作业3

我有一个问题:

Select *
from Table
Where Customer <> 'Customer 1'
  AND (Customer <> 'Customer 2' AND Job <> 'Job 1')

我希望从这里返回的行是:

客户2、作业2
客户2、作业3
客户3,作业1
客户3,作业2
客户3、作业3

但是,返回的行仅针对客户3作业2和3。我仍然希望包括具有作业2和3的客户2以及客户3作业1。

数据库中有比这多得多的列,但这些列是有问题的,所以我只包括了这些。这些行实际上在其中存储了票证数据。我希望客户能够过滤出什么票证显示在报告中,他们可能想要排除一个客户,也排除另一个客户的工作,但包括其他一切。客户名称将是唯一的,但作业名称可以在客户之间重复。

gkn4icbw

gkn4icbw1#

您可以在where中设置单个客户<->工作免责条款,然后只需执行最终not in即可排除任何您不想要或已有的子句:

select *
from Table
where (Customer = 'Customer 2' and Job <> 'Job 1')
    or Customer not in ('Customer 1', 'Customer 2')

例如,如果您有一个Customer 4,并且想要为它们排除Job 2,则将其扩展为:

select *
from tbl
where (Customer = 'Customer 2' and Job <> 'Job 1')
    or (customer = 'Customer 4' and Job <> 'Job 2') --add specific customer and job exclusion
    or Customer not in ('Customer 1', 'Customer 2', 'Customer 4') --add customer 4 here because we have a specific clause for them

相关问题