PostgreSQL – 任何运算符
PostgreSQL 有一个 ANY运算符,用于将标量值与子查询返回的一组值进行比较。
Syntax: expression operator ANY(subquery)
使用 PostgreSQL ANY运算符时必须遵循以下规则:
- 子查询必须正好返回一列。
- 的ANY运算符必须通过以下运算符之一前面=,<=,>,和<>
- 如果子查询的任何值满足条件,则 ANY运算符返回 true,否则返回 false。
在本文中,我们将使用示例 DVD 租赁数据库,此处进行了说明,可以通过单击示例中的此链接进行下载。
示例 1:
在这里,我们将从样本数据库的“电影”表中查询按电影类别分组的电影的最大长度。
SELECT title
FROM film
WHERE length >= ANY(
SELECT MAX( length )
FROM film
INNER JOIN film_category USING(film_id)
GROUP BY category_id );
输出:
示例 2:
在这里,我们将从示例数据库的“类别”表中查询类别为 Action(category_id = 1) 或 Drama(category_id = 7) 的电影。
SELECT
title,
category_id
FROM
film
INNER JOIN film_category
USING(film_id)
WHERE
category_id = ANY(
SELECT
category_id
FROM
category
WHERE
NAME = 'Action'
OR NAME = 'Drama'
);
输出: