如何将 WHERE 子句中的条件与 AND (POSTGRES) 组合

How to combine criteria in a WHERE clause with AND (POSTGRES)

我需要满足两个条件才能从 table 中获取 select 数据,然后再满足单独的第三个条件。我似乎 运行 遇到的问题是我似乎无法 "group" (因为缺少更好的术语)第一个标准,然后再检查第三个标准。

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

需要合并城镇和名称条件,因为我在城镇 #1 中也有一个名字 "south park",我确实想将该记录与不是 [=23= 的所有内容一起提取] 在镇 #2.

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

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

第一个查询删除了城镇 2 中的所有内容以及报告 12345

中的所有 "south park" 名称

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

我认为你想要的逻辑使用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;