我正在尝试使用该EXCEPT子句从表中检索数据。我想从中获取table1除存在的行以外的所有行table2。据我了解,以下内容不起作用:
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。您可以使用任何别名。
fk_id_tbl2
SELECT
经常被忽略的是:(EXCEPT折叠重复项)和EXCEPTALL-之间的细微差别,使所有单独的不匹配行保持一致。
EXCEPTALL
EXCEPT手册中的详细信息。