初学者问多表外连接问题
假设说三个表外连接
select * from A left join B on A.x=b.x left join C on...........
A和B外连接我懂 再挂C表的时候 是A和B的虚拟合表 挂C 还是B表在挂C(因为C是写在B的后面的)
on链接条件怎么写
写成A.xx=C.xx 就是A C外连?
写成B.xx=C.xx 就是B C外连?
有些糊涂呢
[解决办法]
--写成A.xx=C.xx 就是A C外连,沒錯!
--写成B.xx=C.xx 應該是A及B同時與C外连
--也許用下面的測試結果你會更清楚:
CREATE TABLE #t1 (a1 CHAR(1))
INSERT #t1 SELECT 'A'
INSERT #t1 SELECT 'B'
CREATE TABLE #t2 (a1 CHAR(1))
INSERT #t2 SELECT 'A' UNION ALL SELECT 'C'
CREATE TABLE #t3 (a1 CHAR(1))
INSERT #t3 SELECT 'A' UNION ALL SELECT 'B' UNION ALL SELECT 'C'
SELECT a.a1 a_a1,b.a1 b_a1,c.a1 c_a1
FROM #t1 a
LEFT JOIN #t2 b ON a.a1=b.a1
LEFT JOIN #t3 c ON a.a1=c.a1
SELECT a.a1 a_a1,b.a1 b_a1,c.a1 c_a1
FROM #t1 a
LEFT JOIN #t2 b ON a.a1=b.a1
LEFT JOIN #t3 c ON b.a1=c.a1