使用 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 语句。
好处:
我们不需要创建临时 table。这可以防止数据库拥有太多对象,这是一件好事,因为数据库中每个额外的对象都会花费资源来管理。
我们可以使用单个 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;
为什么我不能在 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 语句。
好处:
我们不需要创建临时 table。这可以防止数据库拥有太多对象,这是一件好事,因为数据库中每个额外的对象都会花费资源来管理。
我们可以使用单个 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;