SQL: это может быть написано более эффективно? - PullRequest
2 голосов
/ 20 мая 2019

Я хочу создать временную таблицу для хранения уникальных значений gid из ряда различных таблиц, которые имеют общий общий gid.В настоящее время у меня есть это написано следующим образом:

CREATE TABLE #QHP_Unique
(some_gid INT)  

INSERT INTO #QHP_Unique
SELECT DISTINCT PR.some_gid
FROM Table_PR PR

INSERT INTO #QHP_Unique
SELECT DISTINCT PX.some_gid
FROM Table_PX PX
LEFT OUTER JOIN #QHP_Unique QS ON PX.some_gid= QS.some_gid
WHERE QS.some_gid IS NULL;

INSERT INTO #QHP_Unique
SELECT DISTINCT COP.some_gid
FROM Table_COP COP
LEFT OUTER JOIN #QHP_Unique QS ON COP.some_gid= QS.some_gid
WHERE QS.some_gid IS NULL;

и еще 3 из этих вкладышей с 3 другими таблицами.

Есть ли способ написать все это в одном запросе?

1 Ответ

4 голосов
/ 20 мая 2019

Вы можете сделать это, используя UNION, он выберет DISTINCT значения из комбинированных таблиц:

CREATE TABLE #QHP_Unique
(some_gid INT)  

INSERT INTO #QHP_Unique (some_gid)
SELECT some_gid
FROM Table_PR

UNION 

SELECT some_gid
FROM Table_PX 

UNION 

SELECT some_gid
FROM Table_COP
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...