Q&A
MySQLではJOINでONとUSING()の違いはなんでしょうか。
私が知る限り、USING()の方が便利な構文でONはカラム名が一致しない時に、より柔軟であるという違いです。
なので、他に何か違いはあるのでしょうか。もしあるならばどのような時に使い分けるべきですか。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答1件
0
ベストアンサー
基本的にはシンタックスシュガーですが、他にもちょっとした違いはあります。
ONの方が一般的です。1つは、列のセットでもON状態のテーブルを結合することができます。
下記に例を載せておきます。
SELECT * FROM movie_world.City JOIN movie_world.Country ON (City.CountryCode = Country.Code) WHERE ...
USINGは両方のテーブルがまったく同じ名前のカラムを共有しているときに便利です。
この時2つのテーブルが融合します。この場合1つはこのようにいいます。
SELECT ... FROM movie JOIN movie_actor USING(movie_id) WHERE ...
また、さらに便利なことに、融合するカラムを完全に分類する必要もありません。
SELECT movie.title, movie_id FROM movie JOIN movie_actor USING(movie_id) WHERE ...
いかに便利かというと、ON上で上記を行うには以下を書く必要があります。
SELECT movie.title, moive.movie_id FROM moive JOIN moive_actor ON (moive.moive_id = movie_actor.moive_id) WHERE ...
SELECT clause内の"movie.movie_id"識別に注目してください。"film_id"とだけ言うと無効になってしまいます。
USINGを使って融合から"select *"するとしたら、融合するカラムは結果セットに一回しか表示されません。しかし、ONだったら二回現れます。
投稿2014/11/22 13:44
総合スコア47
関連した質問
意見交換
受付中
エンジニア脱初心者のために意見募集します!
回答7
クリップ3
更新
2023/02/27
Q&A
解決済
(c#)MySQLにあるテーブルをキーワード検索して画面上に出力する方法をお助けください。
回答2
クリップ0
更新
2023/03/19
Q&A
解決済
unity:CinemachineTransposerが取得できない
回答1
クリップ0
更新
2023/03/25
意見交換
受付中
零細IT企業から大手IT企業への転職
回答7
クリップ0
更新
2023/03/16
意見交換
受付中
データベースの負荷を下げたい
回答27
クリップ0
更新
2023/03/26
Q&A
解決済
sort()で使うpair型の比較関数をテンプレート化するとエラーが出るので解消したい
回答4
クリップ1
更新
2023/03/12
Q&A
解決済
WordPressのデータベース(mySql)から、投稿のデータとそれに紐づく複数のカスタムフィールドを取得したい。
回答1
クリップ0
更新
2023/03/24
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。