使用 EXCEPT 和 UNION 时如何获得 COUNT

How to get COUNT when using EXCEPT and UNION

为什么我不能在 table 中使用 COUNT?

SELECT COUNT(*)  FROM
(
(SELECT * FROM task.tableA EXCEPT SELECT * FROM task.tableB)
UNION
(SELECT * FROM task.tableB EXCEPT SELECT * FROM task.tableA)
)

这种类型的查询称为内联视图(派生 tables)。内联视图是另一个 SELECT 语句的 FROM 子句中的 SELECT 语句。

好处:

  1. 我们不需要创建临时 table。这可以防止数据库拥有太多对象,这是一件好事,因为数据库中每个额外的对象都会花费资源来管理。

  2. 我们可以使用单个 SQL 查询来完成我们想要的。

使用 table 名称 "temp" 执行您的查询,如下所示

SELECT COUNT(*) 
FROM
(
    (SELECT * FROM task.tableA EXCEPT SELECT * FROM task.tableB)
    UNION
    (SELECT * FROM task.tableB EXCEPT SELECT * FROM task.tableA)
) temp;