【问题标题】:Using EXCEPT clause in PostgreSQL在 PostgreSQL 中使用 EXCEPT 子句
【发布时间】:2016-05-21 15:27:25
【问题描述】:

我正在尝试使用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 的唯一方法似乎是从相同的表中选择或从不同的表中选择具有相同列名的列。

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

【问题讨论】:

    标签: sql postgresql except


    【解决方案1】:

    您的查询似乎完全有效:

    SELECT fk_id_tbl2 AS some_name
    FROM   table1
    EXCEPT  -- you may want to use EXCEPT ALL
    SELECT pk_id
    FROM   table2;
    

    names 与查询无关。只有 数据类型 必须匹配。您查询的输出列名是fk_id_tbl2,因为它是第一个SELECT 中的列名。您可以使用任何别名。

    经常被忽视的:EXCEPT(折叠重复项)和EXCEPT ALL(保留所有单独的不匹配行)之间的细微差别。 更多解释和其他方法可以做到这一点,其中一些更灵活:

    Details for EXCEPT in the manual.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 2017-05-20
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2015-02-04
      相关资源
      最近更新 更多