1

SQLで、have句のエイリアスフィールドを参照する必要があるが、エイリアスに引用符が含まれている場合、どうすればよいですか?

select (select...) as '005'
group by ...
having '005'>0
4

2 に答える 2

4

FROM句が欠落していると思います。一重引用符ではなく、バッククォートを使用する必要があります。

SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0

あなたが何をしたいのかについて少し推測しているので、あなたがあなたの完全な質問を投稿するならば、それは助けになるでしょう。

于 2010-06-05T00:03:16.260 に答える
2

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
于 2010-06-05T00:13:14.880 に答える