PostgreSQL INTERSECT PostgreSQL Union PostgreSQL EXCEPT 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 Union PostgreSQL EXCEPT