九月 3, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的 ALL 运算符将值与子查询返回的值列表进行比较。
目录
PostgreSQL ALL 运算符概述
PostgreSQL ALL 运算符允许您通过将值与子查询返回的值列表进行比较来查询数据。
下面说明了 ALL 运算符的语法:
comparison_operator ALL (subquery)
在这个语法中:
- ALL 运算符前面必须有比较运算符,例如等于 (=)、不等于 (!=)、大于 (>)、大等于 (>=)、小于 (<) 和小等于 (<=)。
- ALL 运算符后面必须跟一个子查询,子查询也必须用括号括起来。
假设子查询返回一些行,ALL 运算符的工作原理如下:
column_name > ALL (subquery)
如果column_name
的值大于子查询返回的最大值,则表达式的计算结果为 true。column_name >= ALL (subquery)
如果column_name
的值大等于子查询返回的最大值,则表达式的计算结果为 true。column_name < ALL (subquery)
如果column_name
的值小于子查询返回的最小值,则表达式的计算结果为 true。column_name <= ALL (subquery)
如果column_name
的值小等于子查询返回的最小值,则表达式计算结果为 true。column_name = ALL (subquery)
如果column_name
的值等于子查询返回的任何值,则表达式的计算结果为 true。column_name != ALL (subquery)
如果column_name
的值不等于子查询返回的任何值,则表达式的计算结果为 true。
如果子查询不返回任何行,则 ALL 运算符的计算结果始终为 true。
PostgreSQL ALL 运算符示例
让我们使用示例数据库中的film
表进行演示。
以下查询返回按电影评级分组的所有电影的平均长度:
SELECT
ROUND(AVG(length), 2) avg_length
FROM
film
GROUP BY
rating
ORDER BY
avg_length DESC;
要查找长度大于上述平均长度列表的所有影片,请使用 ALL 和大于运算符 (>),如下所示:
SELECT
film_id,
title,
length
FROM
film
WHERE
length > ALL (
SELECT
ROUND(AVG (length),2)
FROM
film
GROUP BY
rating
)
ORDER BY
length;
从输出中可以清楚地看到,查询返回长度大于子查询返回的平均长度列表中最大值的所有电影。
在本教程中,您学习了如何使用 PostgreSQL 的 ALL 运算符将值与子查询返回的值列表进行比较。