SQL ANY 操作符
SQL ANY
将第一个表的值与第二个表的所有值进行比较,如果与任何值匹配,则返回该行。
它具有以下语法:
SELECT column
FROM table1
WHERE column OPERATOR ANY (
SELECT column
FROM table2
);
这里,
column
是要过滤的列名table1
和table2
是要比较的两个表OPERATOR
是连接两个查询的任何 SQL 操作符ANY
比较table1
和table2
,以查看是否存在任何匹配项
注意:column
占位符可以代表来自两个表的多个不同列。
示例 1:SQL ANY 操作符
假设我们想找到年龄与任何一个学生的年龄相似的老师。那么,我们可以使用以下查询:
SELECT *
FROM Teachers
WHERE age = ANY (
SELECT age
FROM Students
);
在这里,子查询从 Students
表中返回所有年龄。
SELECT age
FROM Students
并且,下面的条件将学生年龄(由子查询返回)与教师的年龄进行比较。
WHERE age = ANY (...)
如果存在任何匹配项,则选择 Teachers 表中对应的行。

示例 2:SQL ANY 与 < 操作符
我们可以使用任何比较操作符,如 =
、>
、<
等,与 ANY
和 ALL
关键字一起使用。
我们来看一个例子,我们想找到年龄小于任何学生的老师。
SELECT *
FROM Teachers
WHERE age < ANY (
SELECT age
FROM Students
);
在这里,SQL 命令选择如果外部查询中的 age 小于子查询中的任何 age 的行。

SQL ALL 操作符
SQL ALL
将第一个表的值与第二个表的所有值进行比较,如果与所有值都匹配,则返回该行。
它具有以下语法:
SELECT column
FROM table1
WHERE column OPERATOR ALL (
SELECT column
FROM table2
);
这里,
column
是要过滤的列名table1
和table2
是要比较的两个表OPERATOR
是连接两个查询的任何 SQL 操作符ALL
比较table1
和table2
,以查看所有值是否都匹配
注意:column
占位符可以代表来自两个表的多个不同列。
示例 3:SQL ALL 操作符
例如,如果我们想找到年龄大于所有学生的老师,我们可以使用:
SELECT *
FROM Teachers
WHERE age > ALL (
SELECT age
FROM Students
);
在这里,下面的子查询从 Students 表中返回所有年龄。
SELECT age
FROM Students
并且,下面的条件将学生年龄(由子查询返回)与教师的年龄进行比较。
WHERE age > ALL (...)
如果教师的年龄大于所有学生的年龄,则选择 Teachers 表中对应的行。

另请阅读