SQLで、have句のエイリアスフィールドを参照する必要があるが、エイリアスに引用符が含まれている場合、どうすればよいですか?
select (select...) as '005'
group by ...
having '005'>0
SQLで、have句のエイリアスフィールドを参照する必要があるが、エイリアスに引用符が含まれている場合、どうすればよいですか?
select (select...) as '005'
group by ...
having '005'>0
FROM句が欠落していると思います。一重引用符ではなく、バッククォートを使用する必要があります。
SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0
あなたが何をしたいのかについて少し推測しているので、あなたがあなたの完全な質問を投稿するならば、それは助けになるでしょう。
SQL-92標準では、列エイリアスに一重引用符ではなく二重引用符を使用することを定義しています。ほとんどのデータベースでは、通常とは異なる文字は二重引用符を使用する場合にのみ許可されます。
GROUP BY
とはいえ、すべてのデータベースがorHAVING
句での(同じクエリ内の)列エイリアスの参照をサポートしているわけではありません。GROUP BY
移植可能なクエリの場合、 orHAVING
句で列エイリアスを参照する方法はお勧めしません。さらに、この句は集計用です。列エイリアスHAVING
で集計関数(IE:COUNT、AVG、MIN / MAXなど)が実行されないため、指定した簡略化された例でエラーが発生するはずです。005
以下は、MySQL4.1で動作します。
SELECT COUNT(*) AS "005"
FROM TABLE t
GROUP BY ...
HAVING `005` > 0