SQL多条件查询怎么写_ANDOR逻辑组合完整示例【教学】

2次阅读

sql 多条件查询需用 WHERE 子句配合 AND、OR 及括号控制逻辑优先级;AND 要求所有条件为真,OR 满足其一即可;混合使用时必须加括号明确分组;IN 可替代同一字段的多个 OR,提升可读性与性能。

SQL 多条件查询怎么写_ANDOR 逻辑组合完整示例【教学】

SQL 多条件查询的核心是用 WHERE 子句配合 ANDOR 和括号控制优先级,写错逻辑容易查出错误数据或漏数据。

基础 AND 多条件(全部满足)

用 AND 连接多个条件时,所有条件都必须为真,整行才被返回。适合“既要 A,又要 B,还要 C”的场景。

  • 语法:WHERE 条件 1 AND 条件 2 AND 条件 3
  • 示例:查 2023 年销售额超 5000 且属于华东区的订单

SELECT * FROM orders WHERE YEAR(order_date) = 2023 AND amount > 5000 AND region = ‘ 华东 ’;

基础 OR 多条件(满足任一)

用 OR 连接时,只要有一个条件为真就返回该行。注意它比 AND 优先级低,单独混用易出错。

  • 示例:查状态是“已发货”或“已签收”的订单

select * FROM orders WHERE status = ‘ 已发货 ’ OR status = ‘ 已签收 ’;

AND 和 OR 混合使用(必须加括号!)

混合时,AND 默认先于 OR 计算。不加括号可能结果完全偏离预期。推荐始终用括号明确分组。

  • 错误写法(易误解):WHERE status = ‘ 已发货 ’ OR status = ‘ 已签收 ’ AND region = ‘ 华东 ’ → 实际等价于 status=’ 已发货 ’ OR (status=’ 已签收 ’ AND region=’ 华东 ’)
  • 正确写法(按业务意图分组):查“华东区的所有已发货订单”或“所有已签收订单”

SELECT * FROM orders WHERE (status = ‘ 已发货 ’ AND region = ‘ 华东 ’) OR status = ‘ 已签收 ’;

进阶:IN + AND 组合替代多个 OR

当多个 OR 是对同一字段做等值判断(如 status=’A’ OR status=’B’ OR status=’C’),用 IN 更简洁、可读性强、性能通常更好。

  • 示例:查华东或华南区、且订单金额在 3000–8000 之间的客户

SELECT customer_id, amount, region FROM orders WHERE region IN (‘ 华东 ’, ‘ 华南 ’) AND amount BETWEEN 3000 AND 8000;

站长
版权声明:本站原创文章,由 站长 2025-12-21发表,共计939字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources