Получение отдельного значения в двух таблицах сервера Union sql

StackOverflow https://stackoverflow.com/questions/1891016

Вопрос

Я пытаюсь получить все различные значения в двух таблицах, используя объединение.

Идея состоит в том, чтобы подсчитать все уникальные значения в столбце столбец A без повторов, чтобы можно было суммировать все столбцы, содержащие уникальный столбец A.

Это то, что я пробовал (sql-сервер 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 не нужны;они будут удалены в предложении 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», тогда будут возвращены повторяющиеся значения столбца A из каждой таблицы.

Чтобы получить отдельные значения в запросе Union, вы можете попробовать это

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