sql - 如何将 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;
推荐阅读
- xamarin.forms - Xamarin.Forms 4 URI 路由导航
- go - 更改类型后获取地址
- html - 强制输入html语言
- flutter - Flutter 中的自定义 BoxShadow
- c# - 更新一条语句中多条记录的显示顺序列
- objective-c - 将 Objective-C 类存储在数组中并使用它们
- python - 如何根据 id 和 value 将序列号放入我的重复值中
- jquery - jquery.contextMenu ajax提交后无法读取属性
- graphql - 在graphql.js中调用graphql方法的requestString参数是什么?
- sparql - 如何“旋转” SPARQL 导致“循环”?