PostgreSQL EXCEPT17 Mar 2025 | 4 分钟阅读 在本节中,我们将了解 PostgreSQL EXCEPT 运算符的工作原理,该运算符用于返回初始命令中未出现在第二个命令输出中的行。 以及 PostgreSQL Except 运算符的 单表达式和多表达式 以及 order by 子句的示例。 什么是 PostgreSQL Except 运算符?在 PostgreSQL 中,EXCEPT 运算符用于通过比较两个或多个命令的输出来检索行,就像 UNION 和 INTERSECT 运算符一样。 换句话说,我们可以说 PostgreSQL EXCEPT 运算符从 左侧(第一个 SELECT)命令检索不同的行,这些行不在 右侧(第二个 SELECT)命令的结果集中。并且所有 SELECT 命令 将定义一个数据集。 EXCEPT 运算符将返回初始数据集中的所有记录,然后删除第二个数据集中的所有值。 下图表示由 EXCEPT 运算符生成的最终输出。 ![]() 在上图中,芥末黄区域表示执行 EXCEPT 命令后检索到的记录。这些记录存在于 圆圈 P 中,而不存在于 圆圈 Q 中。 EXCEPT 命令中的每个 SELECT 命令必须具有相似数量的输出字段和相似的数据类型。 PostgreSQL EXCEPT 运算符的语法PostgreSQL except 运算符的示例如下 在上面的语法中,我们有以下参数,我们将在下表中讨论
PostgreSQL Except 运算符的示例要了解 PostgreSQL Except 运算符的工作原理,我们将采用在 PostgreSQL UNION 教程中创建的 top_rated_cars 和 most_reliable_cars 表 要查看 top_rated_cars 表中的数据,我们将使用 SELECT 命令,如下面的命令所示 输出 执行上述命令后,我们将获得以下结果 ![]() 以下命令从 most_reliable_cars 表返回数据 输出 在实现上述命令后,我们将获得以下输出 ![]()
在下面的示例中,我们将使用一个 EXCEPT 运算符,该运算符包含一个具有相似数据类型的字段 输出 执行上述命令后,我们将获得以下输出 ![]() 在上面的示例中,EXCEPT 运算符检索 top_rated_cars 表中存在而在 most_reliable_cars 表中不存在的所有 car_name 值。 这意味着如果 car_name 值存在于 top_rated_cars 表中,并且也存在于 most_reliable_cars 表中,则 car_name 值将不会出现在 EXCEPT 命令输出中。 带有各种表达式的 PostgreSQL Except 示例我们现在将看到一个示例,以了解 PostgreSQL Except 运算符在使用多个列时的运行方式。 在下面的示例中,我们将使用 PostgreSQL 中的 Except 运算符来检索各种列。 为此,我们将从 Organization 数据库中获取 employee 和 department 表,这是我们在 PostgreSQL 教程的较早部分中创建的。 输出 在实现上述命令后,我们将获得以下输出,该输出显示了 employee 表中的记录,其中 address 和 phone 值与 department 表的 address 和 phone 值不匹配。 ![]() 在上面的示例中,Except 运算符命令将检索 address、phone 值与 department 表的 address 和 phone 列值不匹配的 employee 表的值。
如果我们要对 EXCEPT 运算符的输出进行排序,我们将 ORDER BY 子句 放置在查询列表的最终命令中。 带有 ORDER BY 子句的 PostgreSQL Except 的语法 以下示例用于表示带有 order by 子句的 PostgreSQL Except 带有 Order by 子句的 PostgreSQL EXCEPT 示例在下面的示例中,我们使用与 top_rated_car 和 most_reliable_cars 类似的表来了解带有 ORDER BY 子句的 EXCEPT 运算符的用法 输出 执行上述命令后,我们将获得以下结果集,该结果集显示了由 ORDER BY Car_name 表示的按升序排序的 top_rated_cars。并且 Car_name 列字段在输出中的 #1 位置。 ![]() 在上面的示例中,随后,两个 SELECT 命令之间的列名不相似。 通过它们在输出中的位置来引用 ORDER BY 子句中的列更有利。 概述在 PostgreSQL Except 部分中,我们学习了以下主题
|
我们请求您订阅我们的新闻通讯以获取最新更新。