单个查询中的SQL Server表组合

时间:2016-04-29 22:11:14

标签: sql-server

在SQL Server中,是否可以在单个查询中,无论有多复杂,都可以通过以下方式组合两个表?

使用'完全加入'我必须从两个表中选择.name,从而产生重复的列,并使用' union all'我会得到重复的行。

表1:

/section/([A-Za-z0-9\/-]+)

表2:

+---------+--------+
| name    | value1 |
+---------+--------+
| Abel    | a      |
| Baker   | b      |
+---------+--------+

查询输出:

+---------+--------+
| name    | value2 |
+---------+--------+
| Baker   | x      |
| Charlie | y      |
+---------+--------+

1 个答案:

答案 0 :(得分:1)

使用FULL OUTER JOIN可以达到您的期望。

CREATE TABLE #table1 (name varchar (200), value1 VARCHAR(200))
INSERT INTO #table1
SELECT 'Abel', 'a' UNION 
SELECT 'Baker', 'b'
GO

CREATE TABLE #table2 (name varchar (200), value2 VARCHAR(200))
INSERT INTO #table2
SELECT 'Baker', 'x' UNION 
SELECT 'Charlie', 'y'
GO

SELECT ISNULL(t1.name, t2.name) AS name, t1.value1, t2.value2
FROM #table1 t1
FULL OUTER JOIN #table2 t2 ON t2.name = t1.name

DROP TABLE #table1
DROP TABLE #table2