SQL ANY 和 ALL

SQL ANY 操作符

SQL ANY 将第一个表的值与第二个表的所有值进行比较,如果与任何值匹配,则返回该行。

它具有以下语法:

SELECT column
FROM  table1
WHERE column OPERATOR ANY (
  SELECT column
  FROM table2
);

这里,

  • column 是要过滤的列名
  • table1table2 是要比较的两个表
  • OPERATOR 是连接两个查询的任何 SQL 操作符
  • ANY 比较 table1table2,以查看是否存在任何匹配项

注意:column 占位符可以代表来自两个表的多个不同列。


示例 1:SQL ANY 操作符

假设我们想找到年龄与任何一个学生的年龄相似的老师。那么,我们可以使用以下查询:

SELECT *
FROM Teachers
WHERE age = ANY (
  SELECT age
  FROM Students
);

在这里,子查询Students 表中返回所有年龄。

SELECT age
FROM Students

并且,下面的条件将学生年龄(由子查询返回)与教师的年龄进行比较。

WHERE age = ANY (...)

如果存在任何匹配项,则选择 Teachers 表中对应的行。

How to use ANY in SQL
示例:SQL 中的 ANY

示例 2:SQL ANY 与 < 操作符

我们可以使用任何比较操作符,如 =>< 等,与 ANYALL 关键字一起使用。

我们来看一个例子,我们想找到年龄小于任何学生的老师。

SELECT * 
FROM Teachers
WHERE age < ANY (
  SELECT age
  FROM Students
);

在这里,SQL 命令选择如果外部查询中的 age 小于子查询中的任何 age 的行。

How to use ANY in SQL
示例:SQL 中的 ANY

SQL ALL 操作符

SQL ALL 将第一个表的值与第二个表的所有值进行比较,如果与所有值都匹配,则返回该行。

它具有以下语法:

SELECT column
FROM  table1
WHERE  column OPERATOR ALL (
  SELECT column
  FROM table2
);

这里,

  • column 是要过滤的列名
  • table1table2 是要比较的两个表
  • OPERATOR 是连接两个查询的任何 SQL 操作符
  • ALL 比较 table1table2,以查看所有值是否都匹配

注意:column 占位符可以代表来自两个表的多个不同列。


示例 3:SQL ALL 操作符

例如,如果我们想找到年龄大于所有学生的老师,我们可以使用:

SELECT * 
FROM Teachers
WHERE age >  ALL (
  SELECT age
  FROM Students
);

在这里,下面的子查询从 Students 表中返回所有年龄。

SELECT age
FROM Students

并且,下面的条件将学生年龄(由子查询返回)与教师的年龄进行比较。

WHERE age > ALL (...)

如果教师的年龄大于所有学生的年龄,则选择 Teachers 表中对应的行。

How to use ALL in SQL
示例:SQL 中的 ALL

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战