在PostgreSQL中使用EXCEPT子句

我正在尝试使用该EXCEPT子句从表中检索数据。我想从中获取table1除存在的行以外的所有行table2。据我了解,以下内容不起作用:

CREATE TABLE table1(pk_id int, fk_id_tbl2 int);

CREATE TABLE table2(pk_id int);

Select fk_id_tbl2

FROM table1

Except

Select pk_id

FROM table2

我可以使用的唯一方法EXCEPT似乎是从相同的表中选择,或者从不同的表中选择具有相同列名的列。

有人可以解释一下如何最好地使用解释子句吗?

回答:

您的查询似乎完全有效:

SELECT fk_id_tbl2 AS some_name

FROM table1

EXCEPT -- you may want to use EXCEPT ALL

SELECT pk_id

FROM table2;

列 与查询无关。只有

必须匹配。您的查询的输出列名称为fk_id_tbl2,仅因为它是first中的列名称SELECT。您可以使用任何别名。

经常被忽略的是:(EXCEPT折叠重复项)和EXCEPTALL-之间的细微差别,使所有单独的不匹配行保持一致。

EXCEPT手册中的详细信息。

以上是 在PostgreSQL中使用EXCEPT子句 的全部内容, 来源链接: utcz.com/qa/426953.html

回到顶部