合并两个具有一个或多个附加列的 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
由于您指出 ColumnA
和 ColumnB
的行和值相同,如果值相同,您可以 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
我有两个 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
由于您指出 ColumnA
和 ColumnB
的行和值相同,如果值相同,您可以 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