PostgreSQLINTERSECT-PostgreSQL教程|
PostgreSQL INTERSECT
在本节中,我们将了解PostgreSQL Intersect 运算符的工作原理,该运算符用于合并多个命令的输出。
而例子中的PostgreSQL的交叉操作与单发,多表达,并与ORDER BY子句。
什么是 PostgreSQL Intersect 运算符?
在PostgreSQL 中,INTERSECT 运算符检索两个输出中可用的任何行,就像UNION和Except Operators 一样。
换句话说,我们可以说PostgreSQL 的 intersect算子得到了多个数据集的交集。
如果两个数据集中都存在一条记录,则它将参与 INTERSECT 结果,并且每个数据集都由 SELECT 命令定义。但是,如果记录出现在一个数据集中而不是另一个数据集中,它将从INTERSECT结果中消失。
下图表示由INTERSECT 运算符生成的最终输出。
在上图中,蓝色区域显示了圆 P 和圆 Q 之间的交点。
INTERSECT 中的每个SELECT 命令必须具有相似数量的具有相似数据类型的输出字段。
PostgreSQL INTERSECT运算符的语法
PostgreSQL Intersect 运算符的图示如下:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
在上述语法中,我们有以下参数,我们在下表中讨论了这些参数:
范围 | 描述 |
---|---|
expression1, expression2, expression_n | 这些是我们要检索的列或计算。 |
Tables | 我们要从中获取记录的表。 |
WHERE conditions | 这些是要选择的值必须发生的条件。它是一个可选参数。 |
注意:要使用 INTERSECT 运算符,SELECT 命令中出现的列必须遵循以下规则:
- 两个 SELECT 子句中必须有匹配数量的表达式或列。
- 等效表达式在 SELECT 命令中必须具有相似的数据类型,例如 expression1 在第一个和第二个SELECT命令中必须具有相似的数据类型。
PostgreSQL INTERSECT 运算符示例
为了理解PostgreSQL intersect 运算符的工作,我们将采用PostgreSQL UNION 教程中创建的top_rated_cars和most_reliable_cars表:
要查看top_rated_cars表中的数据,我们将使用SELECT命令,如下面的命令所示:
SELECT * FROM top_rated_cars;
输出
执行上述命令后,我们将得到以下结果:
以下命令返回most_reliable_cars表中的数据:
SELECT * FROM most_reliable_cars;
输出
执行上述命令后,我们将得到以下输出:
- PostgreSQL 与单个表达式INTERSECT的示例
在下面的示例中,我们将使用一个 INTERSECT 运算符,它包含一个具有相似数据类型的字段:
SELECT Car_name
FROM top_rated_cars
INTERSECT
SELECT Car_name
FROM most_reliable_cars;
输出
执行上述命令后,我们将得到以下输出:
注意:在上面的示例中,如果 Car_name 出现在 top_rated_cars 和 most_reliable_cars 表中,它将出现在我们的输出中。
现在,如果我们想在上面的例子中将WHERE 子句添加到 INTERSECT 命令,它会是这样的:
SELECT Car_name
FROM top_rated_cars
WHERE launch_year< 2020
INTERSECT
SELECT Car_name
FROM most_reliable_cars
Where launch_year=2020;
输出
执行上述命令后,我们将得到以下输出,其中显示了我们在使用 where 条件后检索到的那些INTERSECT值。
注意:在上面的示例中,WHERE 子句已添加到所有数据集。
- 初始数据集已被过滤,因此只返回top_rated_cars表中launch_year小于2022的记录。
- 第二个数据集已过滤;因此,只返回来自most_reliable_cars表的记录,其中launch_year等于2020。
PostgreSQL 与各种表达式INTERSECT的例子
我们现在将看到一个示例示例,以了解 PostgreSQL INTERSECT 运算符处理多个列的情况。
在下面的示例中,我们将使用 PostgreSQL 中的 INTERSECT 运算符来检索各种列。
为此,我们从组织数据库中获取员工和部门表,该数据库是我们在 PostgreSQL 教程的前面部分创建的。
SELECT address, phone
FROM employee
WHERE employee_name<> 'ross'
INTERSECT
SELECT address, phone
FROM department
WHERE address<>'London';
输出
执行上述命令后,我们将得到以下输出,其中显示了员工表中地址和电话值与部门表的地址和电话值匹配的记录。
在上面的例子中,在每个数据集上添加了 WHERE 条件来过滤输出;因此,只有员工表中的记录被返回,其中员工名称不是ross。
并且从部门表中检索地址不是London 的记录。
- PostgreSQL INTERSECT 与 ORDER BY 子句
如果我们想对 INTERSECT 运算符的输出进行排序,我们将ORDER BY放在查询列表的最终命令中。
PostgreSQL 的语法与 ORDER BY 子句INTERSECT
下图用于表示 PostgreSQL 与 order by 子句INTERSECT:
SELECT select_list
FROM table1
INTERSECT
SELECT select_list
FROM table2
ORDER BY sort_expression;
PostgreSQL 与 Order by 子句INTERSECT的例子
在以下示例中,我们使用与员工和部门类似的表来了解 INTERSECT 运算符与 ORDER BY 子句的用法:
SELECT address, phone
FROM employee
WHERE employee_name<> 'ross'
INTERSECT
SELECT address, phone
FROM department
WHERE address<>'London'
ORDER BY 1;
输出
执行上面的命令后,我们将得到下面的结果集,它以升序显示按地址排序的结果,用ORDER BY 1 表示。
地址列字段位于输出中的 #1 位置。
概述
在 PostgreSQL INTERSECT部分,我们学习了以下主题:
- 我们使用了PostgreSQL Intersect Operator来合并多个命令的输出。
- 我们还了解了PostgreSQL与单个和多个**INTERSECT**运算符的工作
- 我们还使用了PostgreSQL Intersect with ORDER By子句来对命令输出进行排序。
相关文章:
- [PostgreSQL教程]PostgreSQL教程-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL选择数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL显示表-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- PostgreSQL左连接-PostgreSQL教程|