SQL多条件组合查询详解——AND/OR操作

2026年03月31日/ 浏览 18

一、基础的AND操作

AND操作用于筛选所有满足多个条件的数据。它的语法格式如下:

sql
SELECT * FROM 表名 WHERE 条件1 AND 条件2 AND 条件3;

示例:
假设我们有一个名为“orders”的表,包含“id”、“name”、“amount”、“customer”、“status”等字段。我们需要筛选出所有金额大于1000元且由 customer ID 为 99 的订单。则可以使用以下SQL语句:

sql
SELECT * FROM orders
WHERE amount > 1000 AND customer = 99;

解释:

  • **SELECT ***:返回所有字段的数据。
  • FROM orders:限制查询结果来自“orders”表。
  • WHERE amount > 1000:筛选出金额大于1000元的记录。
  • AND customer = 99:筛选出 customer ID 为 99 的记录。

通过AND操作,我们可以筛选出同时满足多个条件的数据。

二、基础的OR操作

OR操作用于筛选至少有一个条件满足的数据。它的语法格式如下:

sql
SELECT * FROM 表名 WHERE 条件1 OR 条件2 OR 条件3;

示例:
假设我们有一个名为“employees”的表,包含“id”、“name”、“department”、“salary”等字段。我们需要筛选出所有年龄大于30岁或部门为“IT”的员工。则可以使用以下SQL语句:

sql
SELECT * FROM employees
WHERE age > 30 OR department = 'IT';

解释:

  • **SELECT ***:返回所有字段的数据。
  • FROM employees:限制查询结果来自“employees”表。
  • WHERE age > 30:筛选出年龄大于30岁的记录。
  • OR department = ‘IT’:筛选出部门为“IT”的记录。

通过OR操作,我们可以筛选出至少满足一个条件的数据。

三、复杂的AND/OR组合查询

在实际工作中,AND/OR操作通常用于组合多个条件来筛选数据。以下是常见的复杂情况:

1. 两个条件同时满足的情况

示例:
我们需要筛选出金额大于1000元且由 customer ID 为 99 的订单。

sql
SELECT * FROM orders
WHERE amount > 1000 AND customer = 99;

解释:

  • amount > 1000:筛选出金额大于1000元的记录。
  • customer = 99:筛选出 customer ID 为 99 的记录。
  • 结果会是同时满足这两个条件的记录。
2. 多个条件组合的情况

示例:
我们需要筛选出金额大于1000元、customer ID 为 99 且年龄大于30岁的员工。

sql
SELECT * FROM employees
WHERE amount > 1000 AND customer = 99 AND age > 30;

解释:

  • amount > 1000:筛选出金额大于1000元的记录。
  • customer = 99:筛选出 customer ID 为 99 的记录。
  • age > 30:筛选出年龄大于30岁的记录。
  • 结果会是同时满足这三个条件的员工。
3. 多个条件中的OR操作

示例:
我们需要筛选出金额大于1000元且由 customer ID 为 99 的订单,或者年龄大于30岁的员工。

sql
SELECT * FROM orders
WHERE amount > 1000 AND customer = 99
OR age > 30;

解释:

  • amount > 1000 AND customer = 99:筛选出金额大于1000元且由 customer ID 为 99 的订单。
  • age > 30:筛选出年龄大于30岁的员工。
  • 结果会是满足上述两个条件的记录。
4. 多个条件中的AND操作

示例:
我们需要筛选出金额大于1000元、customer ID 为 99 且年龄大于30岁的员工。

sql
SELECT * FROM employees
WHERE amount > 1000 AND customer = 99 AND age > 30;

解释:

  • amount > 1000:筛选出金额大于1000元的记录。
  • customer = 99:筛选出 customer ID 为 99 的记录。
  • age > 30:筛选出年龄大于30岁的记录。
  • 结果会是同时满足这三个条件的员工。

四、总结

SQL中的AND/OR操作在数据查询中具有重要的作用。通过合理运用这些操作,我们可以更高效地筛选出符合条件的数据。在实际应用中,通常会结合逗号来分隔条件,使用括号来明确条件的顺序。同时,要注意条件之间的逻辑关系,避免混淆。


练习题:

  1. 使用以下SQL语句,筛选出金额大于2000元且由 customer ID 为 10 的订单。
    sql
    SELECT * FROM orders
    WHERE amount > 2000 AND customer = 10;
  2. 使用以下SQL语句,筛选出年龄大于35岁或部门为“IT”的员工。
    sql
    SELECT * FROM employees
    WHERE age > 35 OR department = 'IT';
  3. 使用以下SQL语句,筛选出金额大于1000元、customer ID 为 10 且年龄大于35岁的员工。
    sql
    SELECT * FROM employees
    WHERE amount > 1000 AND customer = 10 AND age > 35;
  4. 使用以下SQL语句,筛选出金额大于2000元且由 customer ID 为 10 的订单,同时年龄大于35岁。
    sql
    SELECT * FROM orders
    WHERE amount > 2000 AND customer = 10 AND age > 35;

通过这些练习,我们可以更好地掌握AND/OR操作的使用方法,提高数据查询的效率。希望这篇教程的内容对您有所帮助!

picture loss