クエリ選択リストでエイリアスを使用して、列に別の名前を付けることができます。 GROUP BY
でエイリアスを使用できます 、ORDER 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';
ステートメントの他の場所では、エイリアスへの引用符で囲まれた参照は識別子の引用符を使用する必要があります。そうしないと、参照は文字列リテラルとして扱われます。たとえば、このステートメントは、エイリアスa
を使用して参照される列IDの値でグループ化されます。 :
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';
出典: https://docs.oracle .com / cd / E17952_01 / refman-5.0-en / problem-with-alias.html