Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb
HTML Download (TGZ) - 10.0Mb
HTML Download (Zip) - 10.1Mb


このページは機械翻訳したものです。

B.3.4.4 カラムエイリアスに関する問題

エイリアスをクエリーの選択リストに使用すると、カラムを別の名前にすることができます。 GROUP BYORDER BY、または HAVING 句でエイリアスを使用して、カラムを参照できます。

SELECT SQRT(a*b) AS root FROM tbl_name
  GROUP BY root HAVING root > 0;
SELECT id, COUNT(*) AS cnt FROM tbl_name
  GROUP BY id HAVING cnt > 0;
SELECT id AS 'Customer identity' FROM tbl_name;

標準 SQL では、WHERE 句でのカラムエイリアスへの参照は許可されません。 WHERE 句が評価されるときに、カラム値がまだ判別されていない場合があるため、この制限が課されています。 たとえば、次のクエリーは不正です。

SELECT id, COUNT(*) AS cnt FROM tbl_name
  WHERE cnt > 0 GROUP BY id;

WHERE 句は GROUP BY 句に含められる行を判別しますが、行が選択されるまでわからないカラム値のエイリアスを参照して GROUP BY によってグループ化しています。

クエリーの選択リストで、引用したカラムエイリアスを指定するには、識別子または文字列引用文字を使用します。

SELECT 1 AS `one`, 2 AS 'two';

ステートメント内のどこに指定する場合でも、エイリアスへの引用した参照には、識別子引用符を使用する必要があります。そうしないと、参照は文字列リテラルとして扱われます。 たとえば、次のステートメントはカラム id の値によってグループ化され、エイリアス `a` を使用して参照されます。

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY `a`;

このステートメントはリテラル文字列'a'でグループ化され、次のようには機能しません:

SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
  GROUP BY 'a';