NATURALなJOIN


まあ広告は適当。

SQLでjoin方法は幾つかありますが、現状ではほぼonしか使っていません。
ただまあ、他の方法も知っておくと、人のSQLのQAをするときに便利なのでメモ。

・on
 select * from table_a join table_b on (table_a.id = table_b.s_id and table_b.status is null)

table_a.id = table_b.s_idで明示的にjoinしてる。
他に条件を書けたり、色々出来るので、現状では殆どコレ。


・using
 select * from table_a join table_b using (id)

idという項目名が同じ時に使える。けど、これやるとselect句で使えるidはどっちのテーブルでも無くなるので、テーブル名を頭につけることが出来ない。


・natural
 select * from table_a natural inner join table_b

同じカラム名があったら結合条件に勝手にする。ちなみに複数あったら全部結合条件に使っちゃう。usingの自動版だと思えばいいと思うけど、入ってるテーブル構造を未来永劫信用しないと危ないので、ちょっと危険。



参考:
https://www.javadrive.jp/mysql/join/index3.html