作者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
1F:推 SKL:MySQL没有Full Join,上面的做法是先偷吃步把A,C Right Join 05/22 21:55
2F:→ SKL:所以这边有个前提是C一定是A的子集,但我猜应该是啦 XD 05/22 21:56
3F:→ SKL:然後再用 LEFT JOIN UNION RIGHT JOIN 达到 FULL JOIN 的效果 05/22 21:57
4F:→ 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)