作者cyclone350 (老子我最神)
看板Database
標題Re: [SQL ] MySQL 三個表格合併
時間Wed May 22 21:38:01 2013
※ 引述《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
推 SKL:MySQL沒有Full Join,上面的做法是先偷吃步把A,C Right Join 05/22 21:55
→ SKL:所以這邊有個前提是C一定是A的子集,但我猜應該是啦 XD 05/22 21:56
→ SKL:然後再用 LEFT JOIN UNION RIGHT JOIN 達到 FULL JOIN 的效果 05/22 21:57
→ SKL:第一句寫反了,A LEFT JOIN C 或 C RIGHT JOIN A 都可以啦 ... 05/22 21:59
剛查了一下
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)