📚 目录
🛠️ 概述
在 PostgreSQL 中,AND
和 OR
是常用的逻辑运算符,用于将多个条件组合在一起。它们常与 WHERE
子句结合使用,用于筛选符合多个条件的数据。
➕ AND
运算符
AND
运算符用于连接多个条件,只有当所有条件都为 TRUE
时,结果才为 TRUE
。如果任意一个条件为 FALSE
,整个条件表达式将返回 FALSE
。
示例:
SELECT * FROM employees
WHERE salary > 50000 AND position = 'Manager';
此查询返回所有薪资大于 50000 且职位为 Manager
的员工。
逻辑解释:
- 如果员工的薪资大于 50000 且职位为
Manager
,则该行数据将被返回。 - 如果任一条件不满足(薪资不大于 50000 或职位不是
Manager
),则该行数据不会被返回。
🔶 OR
运算符
OR
运算符用于连接多个条件,只要其中一个条件为 TRUE
,整个表达式的结果就为 TRUE
。只有当所有条件都为 FALSE
时,结果才为 FALSE
。
示例:
SELECT * FROM employees
WHERE position = 'Manager' OR position = 'Developer';
该查询返回所有职位为 Manager
或 Developer
的员工。
逻辑解释:
- 如果员工的职位为
Manager
或者Developer
,该行数据将被返回。 - 如果员工的职位既不是
Manager
也不是Developer
,则该行数据不会被返回。
🔀 AND
和 OR
的优先级
在 SQL 查询中,AND
的优先级高于 OR
。这意味着在没有括号的情况下,AND
会先于 OR
执行。
示例:
SELECT * FROM employees
WHERE salary > 50000 OR position = 'Manager' AND department = 'HR';
此查询的含义是:首先计算 position = 'Manager' AND department = 'HR'
的结果,然后再用 OR
与 salary > 50000
连接。为了避免歧义,可以使用括号明确运算顺序。
示例(使用括号改变优先级):
SELECT * FROM employees
WHERE (salary > 50000 OR position = 'Manager') AND department = 'HR';
在这个查询中,括号改变了优先级,首先计算 salary > 50000 OR position = 'Manager'
,然后再筛选出 department = 'HR'
的员工。
🔗 组合 AND
和 OR
运算符
在复杂查询中,AND
和 OR
运算符常常一起使用。为了确保查询的正确性,推荐使用括号来明确条件的优先级。
示例:
SELECT * FROM employees
WHERE (salary > 50000 AND position = 'Manager') OR department = 'HR';
此查询返回所有薪资大于 50000 且职位为 Manager
的员工,或者部门为 HR
的员工。
📘 参考资料
- PostgreSQL 官方文档:AND 和 OR
- 更多 PostgreSQL 运算符和逻辑表达式技巧整理自:www.52kanjuqing.com
发表回复