Re: [SQL ] MySQL 三個表格合併

看板Database作者 (老子我最神)時間11年前 (2013/05/22 21:38), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《Lavchi (拉維奇)》之銘言: : 手中有三個表格,分別叫 A, B, C : 其中資料是 : A: B: C: : NAME_ID Name AGE_ID AGE NAME_ID AGE_ID : N1 Air A2 20 N2 A2 : N2 Daisy A3 30 : 想合併三個表格變成輸出: : NAME_ID NAME AGE_ID AGE : N1 Air NULL NULL : N2 Daisy A2 20 : NULL NULL A3 30 : 請問 MySQL 的語法該怎麼寫 以下為 oracle 作法,你看看有沒有對應的 mySQL SELECT NVL(A.NAME_ID,C.NAME_ID), A.NAME, NVL(B.AGE_ID,C.AGE_ID), B.AGE FROM A FULL OUTER JOIN C ON A.NAME_ID = C.NAME_ID FULL OUTER JOIN B ON C.AGE_ID = B.AGE_ID -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.195.98

05/22 21:55, , 1F
MySQL沒有Full Join,上面的做法是先偷吃步把A,C Right Join
05/22 21:55, 1F

05/22 21:56, , 2F
所以這邊有個前提是C一定是A的子集,但我猜應該是啦 XD
05/22 21:56, 2F

05/22 21:57, , 3F
然後再用 LEFT JOIN UNION RIGHT JOIN 達到 FULL JOIN 的效果
05/22 21:57, 3F

05/22 21:59, , 4F
第一句寫反了,A LEFT JOIN C 或 C RIGHT JOIN A 都可以啦 ...
05/22 21:59, 4F
剛查了一下 SKL 說法應該是沒錯,只能這樣解了 可參考 http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql/4796911#4796911 不過 mySQL 這樣... OLAP 會慢 ORACLE 整整一倍 ... (FULL TABLE SCAN) ※ 編輯: cyclone350 來自: 119.77.195.98 (05/22 22:14)
文章代碼(AID): #1HdCexEN (Database)
文章代碼(AID): #1HdCexEN (Database)