合并两个具有一个或多个附加列的 SELECT 语句

Merge two SELECT statements which have one or more additional columns

我有两个 select 如下语句

SELECT * FROM TABLE1 

给我

COLUMNA, COLUMNB, COLUMNC

SELECT * FROM TABLE2

给我

COLUMNA, COLUMNB, COLUMND

COLUMNA、COLUMNB 在这两个 SELECT 中相同(相同的行数和单元格值)

我如何合并这两个 SELECT,这样我就可以在一个查询中有四列并且没有额外的行

COLUMNA, COLUMNB, COLUMNC, COLUMND

正在根据评论更新我的问题。假设我有两个如下表

TABLE1                     TABLE2
COLUMNA COLUMNB COLUMNC    COLUMNA COLUMNB COLUMND
value1  value2  value3     value1  value2  value9
value4  null    value5     value4  null    value10
null    value6  value7     null    value6  value11
null    null    value8     null    null    value12

结果应该是

COLUMNA COLUMNB COLUMNC    COLUMND
value1  value2  value3     value9
value4  null    value5     value10
null    value6  value7     value11
null    null    value8     value12

我猜你正在寻找这样的东西。

SELECT COLUMNA, COLUMNB, COLUMNC, NULL as COLUMND FROM TABLE1 

UNION 

SELECT COLUMNA, COLUMNB, NULL as COLUMNC, COLUMND FROM TABLE2

或者也许:

SELECT COLUMNA, COLUMNB, COLUMNC FROM TABLE1 

UNION 

SELECT COLUMNA, COLUMNB, COLUMND as COLUMNC FROM TABLE2 

这将为您提供 3 列,第三列是不同值的一列:

SELECT 
 COLUMNA, COLUMNB, COLUMNC AS [Column3]
FROM TABLE1 
UNION ALL
SELECT 
 COLUMNA, COLUMNB, COLUMND AS [Column3]
FROM TABLE2

试试这个:

SELECT A.COLUMNA, A.COLUMNB, A.COLUMNC, B.COLUMND 
FROM TABLE1 A
JOIN TABLE2 B ON A.COLUMNA = B.COLUMNA AND A.COLUMNB = B.COLUMNB

并且如果在 columnA 和 columnB 中有不相同的行或不存在,并且您希望它出现在结果中,请使用:

SELECT A.COLUMNA, A.COLUMNB, A.COLUMNC, B.COLUMND 
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.COLUMNA = B.COLUMNA AND A.COLUMNB = B.COLUMNB

由于您指出 ColumnAColumnB 的行和值相同,如果值相同,您可以 JOIN 将两个表放在一起

SELECT a.ColumnA
      ,a.ColumnB
      ,a.ColumnC
      ,b.ColumnD
FROM Table1 a
JOIN Table2 b
  ON a.ColumnA = b.ColumnA
  AND a.ColumnB = b.ColumnB

如果两个表之间存在差异,即一个表中有一些记录而另一个表中没有,则可以使用 FULL JOIN 并更改 SELECT:

SELECT COALESCE(a.ColumnA,b.ColumnA) AS ColumnA
      ,COALESCE(a.ColumnB,b.ColumnB) AS ColumnB
      ,a.ColumnC
      ,b.ColumnD
FROM Table1 a
FULL JOIN Table2 b
  ON a.ColumnA = b.ColumnA
  AND a.ColumnB = b.ColumnB