跨2个union sql server表获取不同的值

跨2个union sql server表获取不同的值,sql,union,distinct,distinct-values,Sql,Union,Distinct,Distinct Values,我试图使用一个并集获得两个表中所有不同的值 其思想是在不重复的情况下获得columnA列中所有唯一值的计数,这样我就可以得到包含唯一columnA的所有列的总和 这就是我尝试的(sql server express 2008) 不需要在TableX和TableY上添加额外的区别;他们将在tmp.ColumnA条款中被剥夺权利。声明一个临时表应该消除可能阻止查询执行的歧义 SELECT COUNT(*) FROM ( SELECT DISTINCT ColumnA From TableX WHER

我试图使用一个并集获得两个表中所有不同的值

其思想是在不重复的情况下获得columnA列中所有唯一值的计数,这样我就可以得到包含唯一columnA的所有列的总和

这就是我尝试的(sql server express 2008)

不需要在TableX和TableY上添加额外的区别;他们将在tmp.ColumnA条款中被剥夺权利。声明一个临时表应该消除可能阻止查询执行的歧义

SELECT COUNT(*)
FROM
(
SELECT DISTINCT ColumnA From TableX WHERE x = y
UNION
SELECT DISTINCT ColumnA From TableY WHERE y = z
) t

使用“联合”不会返回重复项。如果使用“UNION ALL”,则将返回每个表中的重复ColumnA值。

若要在UNION查询中获得不同的值,可以尝试以下操作

Select distinct AUnion.Name,AUnion.Company from (SELECT Name,Company from table1 UNION SELECT Name,Company from table2)AUnion

到底是什么不起作用?你有一些多余的区别,但除此之外,这应该是可行的。到目前为止,你得到了什么,导致你认为你所拥有的是不正确的?计数中的区别(DISTINCT是不必要的,因为
UNION
删除了重复项这对我来说很有效。我只需在UNION的select末尾添加一个ColumnAstatement@OMG:打得好。感谢您的帮助。由于UNION会删除重复项,因此不需要DISTINCT。
UNION ALL
不会删除重复项。不过我只是t包括不同的可能会有更高的性能(执行计划不同)-需要更多的测试来证明/反驳这一点。Re:UNION ALL,这就是我所说的:)
SELECT COUNT(*)
FROM
(
SELECT DISTINCT ColumnA From TableX WHERE x = y
UNION
SELECT DISTINCT ColumnA From TableY WHERE y = z
) t
Select distinct AUnion.Name,AUnion.Company from (SELECT Name,Company from table1 UNION SELECT Name,Company from table2)AUnion
SELECT DISTINCT Id, Name
FROM   TableA
UNION ALL
SELECT DISTINCT Id, Name
FROM   TableB
WHERE  TableB.Id NOT IN (SELECT Id FROM TableA)