TL;DR
たまたまみかけたSQLでUSING(hoge_id)
という記述をみて「そういえばUSING
使ったことないな?」と思ったので雑に調べてみた。
結論
USING
はFROM [テーブル名A] JOIN [テーブル名B] ON [テーブル名A].id = [テーブル名B].id
とだいたい等価。
違いがあるとするならUSING
を使うときは両方のテーブルに同じ名前のカラム(上の例だとid
)が存在している必要があるということだろうか?
なので[テーブル名A].id=[テーブル名B].a_id
とかだとUSING
は使えない…ということでいいのかな。
参考
-
MySQLのJOIN構文で、USINGを利用した場合のメリット、デメリットはなんでしょうか
- 質問自体が古いが最近増えたものでも変更があったものでもないという認識なので問題ないだろう。
あとがき
JOIN ONで書くのに比べて簡単に表現できるのでメリットはありつつもUSINGとONが混在すると妙な気持ち悪さを感じる。
そもそも入り混じって気持ち悪いSQLになってるのは設計が悪いというだけの話しなのかもしれないが。
ぼくがUSINGを使うとしたら中間テーブルを経由して多対多の関係性を解消するときに限定するかな…という気持ちになった。
冗長だけどなにやってるかわかりにくいSQLを書くよりはマシなのかなと考えている。