我需要以这样的方式连接两个表:在输出中我有一个UNION:
a:1 | 2 | 3 | 5 b:2 | 3 | 4 | 6
结果:(2,2)|(3,3)|(1,4)|(1,6)|(5,4)|(5,6)
你可以建议任何有用的技巧吗? (我在SQL Server 2012上工作) 谢谢!
答案 0 :(得分:1)
我使用CTE来定义连接记录,如下所示:
WITH MatchedRows
AS
SELECT A.a, B.b FROM A a INNER JOIN B b ON A.a = B.b
SELECT MatchedRows.a, MatchedRows.b
FROM MatchedRows
UNION
SELECT A.a, B.b FROM A a, B b
WHERE A.a NOT IN (SELECT a FROM MatchedRows)
AND B.b NOT IN (SELECT b FROM MatchedRows)
答案 1 :(得分:0)
你没有说出列名是什么,所以只称它们为Col。
SELECT A.Col,
B.Col
FROM A
INNER JOIN B
on A.Col = B.Col
UNION ALL
SELECT A.Col,
B.Col
FROM A
CROSS JOIN B
WHERE A.Col NOT IN (SELECT B.Col FROM B)
AND B.Col NOT IN (SELECT A.Col FROM A)