2008年5月23日金曜日

【MySQL】left join, right joinを同時にしたい full joinみたいなん。

oracleやpostgreSQLでは、full outer joinというものがあるが
MySQLにはない。
そんなときは、joinとunion distinctの併せ技。

table a
id  price
-------------
1  100
2  200

tableb
id  price
-------------
1  150
3  300

の場合、id 1のprice は足し合わせて、2, 3 の値はそのまま表示したいとき


SELECT a.id as id, (a.price + ifnull(b.price,0))as price FROM a left outer join b using(id) union distinct
(SELECT b.id as id, (ifnull(a.price,0) + b.price)as price FROM a right outer join b using(id));

id  price
-------------
1  250
2  200
3  300

が取得できますよ。

でも処理が重たそうですね。

0 件のコメント:

コメントを投稿