在SQL Server中,是否可以在单个查询中,无论有多复杂,都可以通过以下方式组合两个表?
使用'完全加入'我必须从两个表中选择.name,从而产生重复的列,并使用' union all'我会得到重复的行。
表1:
/section/([A-Za-z0-9\/-]+)
表2:
+---------+--------+
| name | value1 |
+---------+--------+
| Abel | a |
| Baker | b |
+---------+--------+
查询输出:
+---------+--------+
| name | value2 |
+---------+--------+
| Baker | x |
| Charlie | y |
+---------+--------+
答案 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