Frage

Ich versuche, alle unterschiedlichen Werte über 2 Tabellen zu erhalten, eine Gewerkschaft mit.

Die Idee ist, eine Zählung aller eindeutigen Werte in der Spalte columnA ohne Wiederholungen zu bekommen, so dass ich eine Zusammenfassung aller Spalten bekommen, die eine einzigartige columnA enthalten.

Das ist, was ich versuchte (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
)
War es hilfreich?

Lösung

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

Die zusätzlichen distincts auf TableX und Tabley sind nicht erforderlich; sie werden in der tmp.ColumnA Klausel abgezogen bekommen. Deklarieren eine temporäre Tabelle sollte die Mehrdeutigkeit beseitigen, die Ihre Abfrage von der Ausführung verhindert möglicherweise haben.

Andere Tipps

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

eine „UNION“ Verwendung nicht Duplikate zurück. Wenn Sie „UNION ALL“ verwendet, dann duplizieren ColumnA Werte aus jeder Tabelle Rückkehr wäre.

Um unterschiedliche Werte in Union Abfrage bekommen können Sie versuchen, diese

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top