SQLPathLab
基础查询 · 基础

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
orders
idcustomer_idproduct_idnamedepartmentamountstatuscreated_atdiscount
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

运行结果

result
idcustomer_idproduct_idnamedepartmentamountstatuscreated_atdiscount
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。

标签

常用过滤数据

这篇内容是否清楚?