行绑定两个没有重复的SQL表?

时间:2019-06-06 13:36:16

标签: sql sql-server

如何将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 :(得分:0)

您只是在寻找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

在第一条select语句之后仅需要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

答案 1 :(得分:0)

您可以尝试:

select * into table3 from
(
select * from table1
union 
select * from table2
) a

答案 2 :(得分:0)

  

从表1中选择*   联盟   从表2选择*