MySQL – テーブル名のエイリアス

エイリアスの縛り

以下のようなテーブルを考える。

ここでnation=’US’のレコードのみ抽出するのに、WHERE句のフィールド名に敢えてテーブル名を付ける。

ここでFROM句でテーブルのエイリアスを指定し、WHERE句とSELECT句ではフルネームのテーブル名を使うとエラーが発生。

そこでWHERE句のテーブル名をエイリアスに変えると、正常に動作。

さらにSELECT句のフィールド名もフルネームのテーブル名を付けるとエラーになって・・・

ここもエイリアスにすると正常に動作する。

これらから、以下のことが分かる。

  • FROM句でテーブル名に別名を付けると、元のテーブル名はオーバーライドされて使えなくなる
  • FROM句で付けたエイリアスは、WHERE句、SELECT句に波及する。

この意味で、エイリアス、別名という呼び方よりは、「テーブル名のオーバーライド」くらいがいいのではないかと思った。

INNER JOINでのエイリアスの使い方

次のような小売側・問屋側の2つのテーブルを準備。

この2つのテーブルを結合して、果物の取引のみを抽出する。

まずwholesaleテーブルのエイリアスを定義するのに、WHERE句のテーブル名もエイリアスに変更して

またshopテーブルのエイリアスを定義するなら、SELECT句で使われているテーブル名まで全て変更しなければならない。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です