在日常工作中,经常需要从数据库里找特定的数据。比如,你想查出公司里“销售部”且“工资大于8000”的员工,这时候就得用到SQL查询的多个条件。
用 WHERE 和 AND 连接条件
最常见的情况是同时满足多个条件。这时可以用 AND 把它们连起来。比如这张员工表:
SELECT * FROM employees
WHERE department = '销售部'
AND salary > 8000;
这条语句的意思是:只选出部门是“销售部”并且工资超过8000的人。两个条件必须同时成立。
满足其中一个条件就行?用 OR
有时候我们想找“销售部”或者“技术部”的员工,不管哪个都行。这时候就该上 OR 了。
SELECT * FROM employees
WHERE department = '销售部'
OR department = '技术部';
只要符合任意一个条件,数据就会被查出来。
组合使用更灵活
实际需求往往更复杂。比如你要找“销售部工资大于8000”的人,或者“技术部工资大于10000”的人。可以这样写:
SELECT * FROM employees
WHERE (department = '销售部' AND salary > 8000)
OR (department = '技术部' AND salary > 10000);
注意这里的括号。它能明确告诉数据库先算哪一部分,避免逻辑混乱,就像数学里的优先级一样。
排除某些数据?试试 NOT
如果你想查“不是人事部”的员工,可以用 NOT。
SELECT * FROM employees
WHERE NOT department = '人事部';
或者更直观地写成:
SELECT * FROM employees
WHERE department != '人事部';
两种写法效果一样,看哪种顺手用哪个。
结合 IN 让条件更简洁
如果要查多个部门的人,比如“销售部、技术部、财务部”,用一堆 OR 就太啰嗦了。这时 IN 更省事。
SELECT * FROM employees
WHERE department IN ('销售部', '技术部', '财务部');
想反着来?加个 NOT IN 就行。
实际场景小例子
假设你在运营一个电商网站,想找出“2024年6月之后下单,且订单金额大于500,状态不是已取消”的订单。
SELECT * FROM orders
WHERE order_date > '2024-06-01'
AND amount > 500
AND status != '已取消';
这样的查询能帮你快速定位高价值的有效订单,做分析时特别有用。
多条件查询是SQL中最常用的功能之一,掌握好 AND、OR、NOT 和 IN 的搭配,再注意括号的使用,基本就能应付大多数业务需求了。