14

我正在尝试使用联合来获取 2 个表中的所有不同值。

这个想法是对 columnA 列中所有唯一值的计数而不重复,以便我可以获得包含唯一 columnA 的所有列的总和。

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

select 
    count(Distinct ColumnA) 
from 
( 
    select Distinct ColumnA as ColumnA from tableX where x = y
    union
    select Distinct ColumnA as ColumnA from tableY where y=z
)
4

4 回答 4

23
SELECT COUNT(distinct tmp.ColumnA) FROM ( (SELECT ColumnA FROM TableX WHERE x=y) 
UNION (SELECT ColumnA FROM TableY WHERE y=z) ) as tmp

TableX 和 TableY 上的额外差异不是必需的;它们将在 tmp.ColumnA 子句中被剥离。声明一个临时表应该消除可能阻止您的查询执行的歧义。

于 2009-12-11T21:43:53.927 回答
17
SELECT COUNT(*)
FROM
(
SELECT DISTINCT ColumnA From TableX WHERE x = y
UNION
SELECT DISTINCT ColumnA From TableY WHERE y = z
) t

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

于 2009-12-11T21:45:21.763 回答
4

要在联合查询中获得不同的值,您可以试试这个

Select distinct AUnion.Name,AUnion.Company from (SELECT Name,Company from table1 UNION SELECT Name,Company from table2)AUnion
于 2015-07-21T07:20:35.103 回答
1
SELECT DISTINCT Id, Name
FROM   TableA
UNION ALL
SELECT DISTINCT Id, Name
FROM   TableB
WHERE  TableB.Id NOT IN (SELECT Id FROM TableA)
于 2017-11-07T18:47:37.850 回答