我有兩個表:
T1
1,
2,B我如何完全加入Mysql?
T2
2,GGG
3,HHH
我想將它們之間的連接給我所有的領域:
1,a,null,null
2,b,2,ggg
null,null,3,hhh
我有兩個表:
T1
1,
2,B我如何完全加入Mysql?
T2
2,GGG
3,HHH
我想將它們之間的連接給我所有的領域:
1,a,null,null
2,b,2,ggg
null,null,3,hhh
的MySQL doesn't有FULL OUTER JOIN
,但你可以效仿例如:
SELECT * FROM T1 LEFT OUTER JOIN T2 ON T1.id = T2.id
UNION ALL
SELECT * FROM T1 RIGHT OUTER JOIN T2 ON T1.id = T2.id
WHERE T1.id IS NULL;
一般:
FULL OUTER JOIN = LEFT OUTER JOIN ∪ (RIGHT OUTER JOIN ∖ INNER JOIN)
你需要削減一個內部連接(在這裏從右連接,但恕我直言並不重要你選擇哪一個),因爲兩者都返回同內連接。在這裏你有:
T1::
T2::
LEFT OUTER JOIN::
RIGHT OUTER JOIN::
INNER JOIN::
FULL OUTER JOIN::
如果這些表具有唯一的(組合)列,那麼您可以在子查詢中構建一個id列表。然後,你可以用兩個外部連接來模擬一個完整的外部聯接:
select *
from (
select col1
from t1
union
select col1
from t2
) ids
left join
t1
on ids.col1 = t1.col1
left join
t2
on ids.col1 = t2.col1
是什麼?沒有內置的命令呢? – 2011-06-13 17:30:13
這些不是所有的組合。預期的結果究竟是什麼? – Alp 2011-06-13 17:30:10
@Alp:就'FULL OUTER'而言,沒有什麼更多。 – 2011-06-13 18:08:30