📚 目录

  1. 概述
  2. AND 运算符
  3. OR 运算符
  4. ANDOR 的优先级
  5. 组合 ANDOR 运算符
  6. 参考资料

🛠️ 概述

在 PostgreSQL 中,ANDOR 是常用的逻辑运算符,用于将多个条件组合在一起。它们常与 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';

该查询返回所有职位为 ManagerDeveloper 的员工。

逻辑解释:

  • 如果员工的职位为 Manager 或者 Developer,该行数据将被返回。
  • 如果员工的职位既不是 Manager 也不是 Developer,则该行数据不会被返回。

🔀 ANDOR 的优先级

在 SQL 查询中,AND 的优先级高于 OR。这意味着在没有括号的情况下,AND 会先于 OR 执行。

示例:

SELECT * FROM employees
WHERE salary > 50000 OR position = 'Manager' AND department = 'HR';

此查询的含义是:首先计算 position = 'Manager' AND department = 'HR' 的结果,然后再用 ORsalary > 50000 连接。为了避免歧义,可以使用括号明确运算顺序。

示例(使用括号改变优先级):

SELECT * FROM employees
WHERE (salary > 50000 OR position = 'Manager') AND department = 'HR';

在这个查询中,括号改变了优先级,首先计算 salary > 50000 OR position = 'Manager',然后再筛选出 department = 'HR' 的员工。


🔗 组合 ANDOR 运算符

在复杂查询中,ANDOR 运算符常常一起使用。为了确保查询的正确性,推荐使用括号来明确条件的优先级。

示例:

SELECT * FROM employees
WHERE (salary > 50000 AND position = 'Manager') OR department = 'HR';

此查询返回所有薪资大于 50000 且职位为 Manager 的员工,或者部门为 HR 的员工。


📘 参考资料