如何将 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 中的所有"南方公园"名称

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

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

最新更新