人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLのJOIN構文で、USINGを利用した場合のメリット、デメリットはなんでしょうか。

例)日記一覧テーブルと日記詳細テーブルを結合する。
SELECT A.id, B.id, A.title, A.body, A.date FROM diary_table as A INNER JOIN diary_list_table as B USING(id);

●質問者: is0me
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:AS BODY MySQL SELECT デメリット
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● iQuest
●10ポイント

メリット/デメリットではなく、USINGがないと内部結合が成立しません。


参考「JOIN 構文」(MySQLリファレンス)

◎質問者からの返答

ありがとうございます。

ON A.id=B.idでは、成立しないのでしょうか。


2 ● chuken_kenkou
●35ポイント ベストアンサー

まず、USINGが使えるのは、結合するそれぞれの表に同一名称の列があり、その列同士で等価なものを結合する場合だけで使える構文です。

この構文は、SQL-92くらいで標準SQLに入りましたが、各RDBMSのバージョンアップの頻度、実装優先順序などにより、主要RDBMSでも未実装の場合があります。

したがって、メリットとしては、

  1. 結合条件が単純明快

デメリットとしては、

  1. 同一列名による等価結合以外では、ON条件に変えるなど、構文の使い分けが必要になる
  2. 異なるRDBMS、同一RDBMSでも新旧バージョンを使うなどのケースでは、USINGを使えない場合がある

などが考えられます。

◎質問者からの返答

他の回答と合わせわかり易い説明ありがとうございます。


3 ●
●25ポイント

USING じゃないときは、ONっすよね。

USINGはカラム名が同じときしか使えないです。

メリットは

結合に使うカラム名が同じときは、ちょっと省略して書けるですね。

SELECT A.id, B.id, A.title, A.body, A.date FROM diary_table as A INNER JOIN diary_list_table as B USING(id);

SELECT A.id, B.id, A.title, A.body, A.date FROM diary_table as A INNER JOIN diary_list_table as B ON A.id=B.id;

USINGがちょっと得した気分です。

好みかもしれないです。自分は常にONで書きますね。

◎質問者からの返答

簡潔に書けますが、バージョンによる影響を考えるとONの方が良さそうですね。

ありがとうございます。


4 ● taroe
●25ポイント

http://www.confrage.com/oracle/oracle_sql/join/using/using.html

この説明どおりです。

◎質問者からの返答

自然結合との比較が非常に分かりやすかったです。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ