PostgreSQL AND & OR 运算符
                           
天天向上
发布: 2025-03-11 23:35:48

原创
970 人浏览过

在 SQL 查询中,ANDOR 运算符用于组合多个条件。它们在 WHERE 子句中常用来对数据进行多条件过滤。AND 表示条件必须全部满足,OR 表示条件只需满足其中之一。


1. AND 运算符

AND 运算符用于连接多个条件,只有当所有条件都为 TRUE 时,结果才为 TRUE

AND 运算符语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND ...;

AND 示例

假设有一个 employees 表,结构如下:

CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    department VARCHAR(50),
    salary DECIMAL(10,2)
);

向表中插入一些数据:

INSERT INTO employees (name, age, department, salary) VALUES
('Alice', 30, 'HR', 6000),
('Bob', 35, 'IT', 8000),
('Charlie', 28, 'Finance', 5500),
('David', 40, 'IT', 9500),
('Eve', 25, 'HR', 5000);

查询:查找所有 IT 部门并且薪水大于 8000 的员工:

SELECT * FROM employees WHERE department = 'IT' AND salary > 8000;

结果:

id | name  | age | department | salary
---+-------+-----+-----------+--------
4  | David |  40 | IT        | 9500.00

在此查询中,只有 David 满足两个条件:department = 'IT'salary > 8000


2. OR 运算符

OR 运算符用于连接多个条件,只有当其中至少一个条件为 TRUE 时,结果才为 TRUE

OR 运算符语法

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR ...;

OR 示例

查询:查找年龄大于 30 岁或者部门是 HR 的员工:

SELECT * FROM employees WHERE age > 30 OR department = 'HR';

结果:

id | name    | age | department | salary
---+---------+-----+-----------+--------
1  | Alice   |  30 | HR        | 6000.00
2  | Bob     |  35 | IT        | 8000.00
4  | David   |  40 | IT        | 9500.00
5  | Eve     |  25 | HR        | 5000.00

在此查询中,满足条件的员工是:年龄大于 30 岁的员工和部门为 HR 的员工。


3. AND 和 OR 结合使用

ANDOR 可以一起使用来组合更复杂的查询条件。需要注意的是,AND 运算符的优先级高于 OR,因此通常需要使用括号来明确条件的组合方式。

AND 和 OR 结合的语法

SELECT column1, column2, ...
FROM table_name
WHERE (condition1 AND condition2) OR (condition3 AND condition4);

AND 和 OR 示例

查询:查找年龄大于 30 岁且薪水大于 8000,或者部门为 HR 的员工:

SELECT * FROM employees 
WHERE (age > 30 AND salary > 8000) OR department = 'HR';

结果:

id | name    | age | department | salary
---+---------+-----+-----------+--------
1  | Alice   |  30 | HR        | 6000.00
2  | Bob     |  35 | IT        | 8000.00
4  | David   |  40 | IT        | 9500.00

在此查询中,符合以下两种条件的员工会被返回:

  1. 年龄大于 30 且薪水大于 8000(如 BobDavid)。
  2. 部门是 HR(如 Alice)。

4. 优先级和括号

  • AND 运算符的优先级高于 OR
  • 为了确保按照期望的顺序评估条件,建议使用括号来明确优先级。

例子

SELECT * FROM employees 
WHERE age > 30 OR department = 'HR' AND salary > 6000;

在此查询中,由于 AND 优先级高,实际效果是:

SELECT * FROM employees 
WHERE age > 30 OR (department = 'HR' AND salary > 6000);

5. 总结

  • AND:只有当所有条件都为 TRUE 时,结果才为 TRUE
  • OR:只要任意一个条件为 TRUE,结果就为 TRUE
  • 结合使用:可以通过括号来明确运算的优先级,确保查询逻辑的准确性。

这两种运算符是构建复杂查询时非常有用的工具,通过合理使用它们,你可以更精确地过滤数据!更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *