sql-server-2008 - 使用 EXCEPT 和 UNION 时如何获取 COUNT

标签 sql-server-2008 count union except

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

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

最佳答案

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

好处:

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

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

使用表名“temp”执行查询,如下所示

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

关于sql-server-2008 - 使用 EXCEPT 和 UNION 时如何获取 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356419/

相关文章:

mysql - 从连接表中选择最后一个值和总数

hadoop - 查找Hbase中具有空值的行数

c - 通过 union 别名

mysql - 从不同的表中选择,并得到一个结果 [mysql] [union] 或 [join]

struct - 如何从 Windows API 访问结构中联合中的变量?

sql - 从触发器回滚事务

sql - 使用带有条件语句的数据库

mysql - 将 DateDiff 和 Count 表达式从 Access SQL 转换为 MySQL

sql-server - 用于创建 ID 列的 T-SQL

sql - 父元素的递归串联