質問

私は労働組合を使用して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
)
役に立ちましたか?

解決

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の上の余分なdistinctsは必要ありません。彼らはtmp.ColumnA句に取り除かますよ。一時テーブルを宣言すると、実行からクエリを防止してきたかもしれない曖昧さを排除する必要があります。

他のヒント

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値を複製します。

ユニオンクエリで個別の値を取得するにはあなたはこれを試すことができます。

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top