Связывание строк двух таблиц sql без дубликатов? - PullRequest
0 голосов
/ 06 июня 2019

Как я могу связать следующие две таблицы в sql вместе, чтобы дубликаты не сохранялись в результирующей таблице:

Таблица 1:

Table 1 
-------
Col_1 | Col_2 |Stuff | Month 
---------------------------
1        a      qwe    May   
2        b      sdf    May 
3        c      ert    May
4        d      pol    May
5        e      lop    May 

Вот таблица 2

Table 2 
-------
Col_1 | Col_2 | Stuff | Month 
-----------------------------
4       d        pol    May
5       e        lop    May
7       f        ghb    June
8       g        fes    June
9       h        lkl    June

Я хочу создать следующую таблицу - назовите ее таблицей 3 - эта таблица берет таблицу 1 и добавляет к ней строки, которые не дублируются в таблице 2 (это может быть либо вверху, либо внизу)

Таблица 3 - То, что я хочу достичь, выглядит так:

Table 3 
-------
Col_1 | Col_2 |Stuff | Month 
---------------------------
1        a      qwe    May   
2        b      sdf    May 
3        c      ert    May
4        d      pol    May
5        e      lop    May 
7       f        ghb    June
8       g        fes    June
9       h        lkl    June

Как я могу сделать это в SQL? Я использую Micrsofot SQL Server Management studio 2017

любая помощь приветствуется

Столбцы всегда остаются неизменными

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

Вы можете попробовать:

select * into table3 from
(
select * from table1
union 
select * from table2
) a
0 голосов
/ 06 июня 2019

Выбрать * из таблицы1 союз Выберите * из таблицы2

0 голосов
/ 06 июня 2019

Вы просто ищете оператор UNION, который удаляет дубликаты из двух одинаковых запросов (с одинаковым количеством столбцов и типами данных):

SELECT col_1, col_2, stuff, month FROM table_1
UNION
SELECT col_1, col_2, stuff, month FROM table_2
ORDER BY col_1

Применяемая сортировка на основе результатов выборки.

Если вам нужно материализовать ваш вывод (сохранить его в таблице), вы можете использовать для этого условие SELECT ... INTO, как показано ниже:

SELECT col_1, col_2, stuff, month FROM table_1
INTO table_3
UNION
SELECT col_1, col_2, stuff, month FROM table_2
ORDER BY col_1

Часть INTO нужна только послепервый оператор выбора, и нет необходимости в производной таблице (подзапросе), чтобы это работало.

Теперь, хотя это возможно, я бы все же выбрал тот же вывод с более ясным намерением для будущего читателя и сделал быиспользование производной таблицы следующим образом:

SELECT *
INTO table_3
FROM (
  SELECT col_1, col_2, stuff, month FROM table_1
  UNION
  SELECT col_1, col_2, stuff, month FROM table_2
  ORDER BY col_1
) t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...