WHERE
根据条件筛选记录,只返回满足条件的数据行。
简介
WHERE 在分组和聚合之前筛选原始记录,只让条件结果为 TRUE 的行继续参与查询。多个条件可用 AND、OR、NOT 组合,并用括号明确优先级。判断 NULL 时必须使用 IS NULL 或 IS NOT NULL,而不是 = NULL。
基础语法
SELECT * FROM orders WHERE amount > 1000;
示例
WHERE 示例
严格大于条件只返回 amount 为 1200 和 1500 的订单;如果 amount 恰好为 1000,也不会满足该条件。
示例数据表
表名:
orders| id | customer_id | product_id | name | department | amount | status | created_at | discount |
|---|---|---|---|---|---|---|---|---|
| 1 | 101 | 201 | Alice | Sales | 1200 | paid | 2026-01-03 | 0 |
| 2 | 102 | 202 | Bob | IT | 900 | pending | 2026-01-08 | 50 |
| 3 | 101 | 201 | Cindy | Sales | 1500 | paid | 2026-02-02 | 100 |
| 4 | 104 | 203 | David | HR | 700 | cancelled | 2026-02-15 | 0 |
运行结果
| id | customer_id | product_id | name | department | amount | status | created_at | discount |
|---|---|---|---|---|---|---|---|---|
| 1 | 101 | 201 | Alice | Sales | 1200 | paid | 2026-01-03 | 0 |
| 3 | 101 | 201 | Cindy | Sales | 1500 | paid | 2026-02-02 | 100 |
常见问题
WHERE 和 HAVING 有什么区别?
WHERE 在分组前筛选原始行,HAVING 在 GROUP BY 之后筛选聚合结果。
WHERE 中可以写多个条件吗?
可以,常用 AND、OR、NOT 组合多个条件,复杂条件建议使用括号明确优先级。
WHERE 能判断 NULL 吗?
可以,但不能用 = NULL,应使用 IS NULL 或 IS NOT NULL。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。