首页/数据/SQL 速查/AND / OR / NOT 逻辑组合
本包目录(311 条)

AND / OR / NOT 逻辑组合

组合多个条件时先搞清优先级:NOT 高于 AND、AND 高于 OR;SQL 不保证短路求值,可能报错的表达式不要靠条件顺序保护。

SQL 速查数据更新于 2026-10-12

优先级演示

优先级演示
SELECT * FROM t
WHERE a = 1 AND b = 2 OR c = 3;
-- 等价于:(a = 1 AND b = 2) OR c = 3

SELECT * FROM t
WHERE (a = 1 OR b = 2) AND c = 3;   -- 显式括号更清晰
优先级NOT 高于 AND,AND 高于 OR
括号复杂条件一律显式加括号
求值顺序标准不保证短路,优化器可重排条件
三值逻辑下:0 AND NULL 得 0,1 OR NULL 得 1,其余组合为 NULL,比直觉更复杂。

易错点

  • 混用 AND 与 OR 不加括号会让语义悄悄改变,是错查询与慢查询的常见来源
  • 不要依赖短路逻辑保护可能报错的函数调用:优化器重排后该表达式仍可能被执行

数据来源与参考

  • MySQL 8.0 Reference Manual · Logical Operators
  • PostgreSQL Documentation · Logical Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌