首页 > 解决方案 > 如何将 WHERE 子句中的条件与 AND (POSTGRES) 结合起来

问题描述

我需要满足两个条件才能从表中选择数据,然后满足单独的第三个条件。我似乎遇到的问题是,在检查第三个标准之前,我似乎无法将第一个标准“分组”(因为没有更好的术语)。

select * 
from locations 
where (town <> '2' and name <> 'south park') and report_number = 12345;

城镇和名称条件需要结合起来,因为我在 1 号城镇也有一个“南方公园”的名字,我确实想把该记录与城镇 2 中所有不是“南方公园”的东西一起拉出来。

通过执行以下操作,我能够解决它(但非常粗略):

select * 
from locations 
where (town || name <> '2south park') and report_number = 12345;

第一个查询删除了城镇 2 中的所有内容以及报告 12345 中的所有“南方公园”名称

第二个有效,但我希望有更好的方法来编写这个查询。

标签: sqlpostgresqlwhere-clausemultiple-conditions

解决方案


我认为您想要使用的逻辑or,而不是and

where (town <> '2' or name <> 'south park') and 
      report_number = 12345;

您可能会发现这更容易理解为:

where not (town = '2' and name = 'south park') and 
      report_number = 12345;

推荐阅读