COUNT 设置 DIFFERENCE 和 UNION

Jmo*_*y38 2 postgresql except

我似乎无法找到答案的相当简单的问题 - 我正在处理工会和差异,我想对结果执行 COUNT。目前,我不得不输出到一个文件并“wc -l”该文件(Postgres 打印减去 4)。必须有一种方法来包含 COUNT ...

SELECT tbl1.id EXCEPT (SELECT tbl2.id UNION tbl3.id); 
Run Code Online (Sandbox Code Playgroud)

我想知道设置差异后的结果数量。感谢您提供任何意见!

Phi*_*lᵀᴹ 6

干得好:

SELECT COUNT(*) FROM (
    SELECT tbl1.id
    FROM tbl1 EXCEPT
    (
    SELECT tbl2.id
    FROM tbl2

    UNION

    SELECT tbl3.id
    FROM tbl3
    )
) AS t;
Run Code Online (Sandbox Code Playgroud)

  • 几乎肯定。[指定派生表的子查询必须......被分配一个表别名](http://www.postgresql.org/docs/9.1/static/queries-table-expressions.html) 在 postgres (3认同)
  • 这也适用:`SELECT COUNT(*) FROM (SELECT id FROM tbl1 EXCEPT SELECT id FROM tbl2 EXCEPT SELECT id FROM tbl3) AS t;` (3认同)

ype*_*eᵀᴹ 5

获得相同结果的另一种方法是:

SELECT COUNT(*) 
FROM 
  ( SELECT id FROM tbl1 
  EXCEPT 
    SELECT id FROM tbl2 
  EXCEPT 
    SELECT id FROM tbl3
  ) AS t ;
Run Code Online (Sandbox Code Playgroud)