首页/数据/SQL 速查/WHERE 条件过滤
本包目录(311 条)

WHERE 条件过滤

在分组与排序之前过滤行:WHERE 只保留条件为 TRUE 的行;结合 IS NULL、范围与集合条件可以精确圈定数据。

SQL 速查数据更新于 2026-10-12
用途过滤参与后续处理的行
时机FROM 之后、GROUP BY 之前
结果为 NULL视为不满足,行被丢弃

示例

示例
SELECT id, name, status
FROM users
WHERE city = 'Beijing'
  AND status = 1
  AND vip IS NOT NULL
LIMIT 20;
WHERE 与 HAVING 区别:WHERE 过滤行,HAVING 过滤分组后的聚合结果。

易错点

  • status <> 1 会漏掉 status 为 NULL 的行,需要 OR status IS NULL 才完整
  • WHERE 中对列使用函数(如 DATE(created_at)='2024-01-01')通常导致该列索引失效

数据来源与参考

  • MySQL 8.0 Reference Manual · SELECT · WHERE
  • PostgreSQL Documentation · WHERE Clause
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌