目录
SQL AND & OR 运算符简介
在 SQL 查询中,AND
和 OR
是常用的逻辑运算符,用于在 WHERE
子句中连接多个条件。它们可以让你基于多个条件筛选出符合要求的记录。
- AND 运算符:返回两个条件都为真时的记录。
- OR 运算符:返回任意一个条件为真时的记录。
它们通常用于对查询结果进行更加精细的过滤,以满足特定的业务需求。
AND 运算符
AND
运算符用于连接两个或多个条件,只有在所有条件都为真时,才会返回结果。它常用于多重条件查询,确保查询结果符合多个标准。
语法
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND ...;
示例
SELECT * FROM employees WHERE salary > 50000 AND department = 'IT';
- 该查询返回所有
salary
大于 50000 且department
为 ‘IT’ 的员工记录。只有同时满足两个条件的记录才会被返回。
OR 运算符
OR
运算符用于连接两个或多个条件,返回满足任何一个条件的记录。如果有任何条件为真,查询结果将会包括该记录。
语法
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR ...;
示例
SELECT * FROM employees WHERE department = 'Sales' OR department = 'HR';
- 该查询返回
department
为 ‘Sales’ 或 ‘HR’ 的所有员工记录。如果部门是 ‘Sales’ 或 ‘HR’ 之一,都会被包含在结果中。
AND 与 OR 结合使用
在查询中,可以同时使用 AND
和 OR
运算符来连接多个条件。当 AND
和 OR
一起使用时,必须使用括号来明确条件的优先顺序,否则 SQL 语句的逻辑可能会产生不准确的结果。
示例
SELECT * FROM employees
WHERE department = 'IT' AND (salary > 50000 OR experience > 5);
- 该查询返回
department
为 ‘IT’ 且满足以下任意一个条件的员工:salary
大于 50000,或experience
大于 5 年。
使用括号明确 OR
条件的优先级,确保查询逻辑正确。
SQL AND & OR 运算符的优先级
AND
运算符的优先级高于 OR
运算符。也就是说,当 AND
和 OR
出现在同一查询中时,SQL 会首先执行 AND
条件,然后再执行 OR
条件。为了避免优先级问题,建议使用括号来明确条件顺序。
示例
SELECT * FROM employees
WHERE department = 'IT' OR department = 'HR' AND salary > 50000;
- 上面的查询会按以下逻辑执行:
- SQL 会首先执行
department = 'HR' AND salary > 50000
,然后将结果与department = 'IT'
进行OR
运算。
- SQL 会首先执行
为了避免优先级误解,可以将查询改写为:
SELECT * FROM employees
WHERE (department = 'IT' OR department = 'HR') AND salary > 50000;
- 该查询会返回
department
为 ‘IT’ 或 ‘HR’,并且salary
大于 50000 的员工记录。
常见示例
示例 1:查询工资高于 50000 且部门是 ‘IT’ 或 ‘HR’ 的员工
SELECT * FROM employees
WHERE (salary > 50000) AND (department = 'IT' OR department = 'HR');
- 该查询返回所有
salary
大于 50000,且部门是 ‘IT’ 或 ‘HR’ 的员工记录。
示例 2:查询年龄大于 30 且姓名包含 ‘John’ 或 ‘Mary’ 的员工
SELECT * FROM employees
WHERE age > 30 AND (name LIKE '%John%' OR name LIKE '%Mary%');
- 该查询返回所有
age
大于 30,且名字中包含 ‘John’ 或 ‘Mary’ 的员工记录。
示例 3:查询产品价格高于 100 或库存数量大于 50 的产品
SELECT * FROM products
WHERE price > 100 OR stock_quantity > 50;
- 该查询返回所有价格高于 100 或库存数量大于 50 的产品记录。
发表回复