SQL字段筛选怎么写_WHERE条件组合逻辑全解析【教学】

2次阅读

SQL 字段筛选用 WHERE 子句,通过逻辑运算符组合条件:单条件如 age>18;多条件 AND 需全满足,OR 满足其一;IN 可简化多个 OR;NOT 需慎用NULL,判断 NULL 必须用 IS NULL/IS NOT NULL。

SQL 字段筛选怎么写_WHERE 条件组合逻辑全解析【教学】

sql字段筛选靠 WHERE 子句实现,核心是用逻辑 运算符 把多个条件组合起来,让 数据库 只返回符合全部(或部分)要求的数据行。

单条件筛选:最基础的写法

直接在 WHERE 后写一个表达式,比如:

SELECT * FROM users WHERE age > 18;

这表示只查年龄大于 18 的用户。注意字段名、操作符(>、=、!=、LIKE 等)和值之间要有空格,字符串 值记得加单引号。

多条件 AND 连接:必须同时满足

AND 把多个条件串起来,所有条件都为真时整行才被选中:

  • select * FROM orders WHERE status = ‘paid’ AND amount >= 100; —— 查已支付且金额不小于 100 的订单
  • 条件顺序不影响结果,但建议把过滤性更强的条件放前面(如索引字段),有助于提升查询效率
  • 可以嵌套括号明确优先级,比如 WHERE (type = ‘vip’) AND (score> 90 OR level = ‘S’)

多条件 OR 连接:满足任一即可

OR 表示“或者”,只要有一个条件成立,该行就入选:

  • SELECT name FROM products WHERE category = ‘phone’ OR category = ‘tablet’;
  • 注意 OR 的优先级比 AND 低,混用时务必加括号,否则容易出错:WHERE a=1 AND b=2 OR c=3 实际等价于 (a=1 AND b=2) OR c=3,不是你想的 a=1 AND (b=2 OR c=3)
  • 多个 OR 可考虑改用 IN 简化:WHERE category IN (‘phone’, ‘tablet’, ‘laptop’)

NOT 和 NULL 特殊处理:别踩坑

NOT 用于取反,但和 NULL 结合时要特别小心:

  • WHERE NOT (status = ‘cancelled’) 能筛出非取消状态,但不会包含 status 为 NULL 的行(因为 NULL = ‘cancelled’ 返回的是 UNKNOWN,NOT UNKNOWN 还是 UNKNOWN,不等于 TRUE)
  • 判断 NULL 必须用 IS NULLIS NOT NULL,不能用 = NULL 或 != NULL
  • 安全写法示例:WHERE (status != ‘cancelled’) OR (status IS NULL)
站长
版权声明:本站原创文章,由 站长 2025-12-22发表,共计982字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources