sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLはWHERE句で列エイリアスを受け入れません

    あなたは2つの質問をします:
    1。

    WHERE句でSELECTコストエイリアスを参照できないのはなぜですか?

    2.

    しかし、なぜコストの説明で注文するのか。許可されていますか?


    マニュアルには、両方の答えがここにあります:

    出力列の名前を使用して、ORDER BYの列の値を参照できます。 およびGROUP BY 句はありますが、WHEREにはありません またはHAVING 条項;そこで、代わりに式を書き出す必要があります。

    SQL標準によって定義されています その理由は、SELECTの一連のイベントです。 クエリ。当時のWHERE 句が適用され、SELECTの列が出力されます リストはまだ計算されていません。しかし、ORDER BYに関しては 、出力列はすぐに利用できます。

    したがって、これは最初は不便で混乱を招きますが、それでもある程度は理にかなっています。

    関連:

    • PostgreSQLのカウント条件
    • LIMITが適用される前に結果カウントを取得するための最良の方法



    1. SQLcl(Oracle)でクエリ結果をCSVファイルにエクスポートする方法

    2. SQL Serverで小文字を大文字に変換する方法– UPPER()

    3. Oracle12.2シャーディング

    4. phpPgAdminからのPostgressql挿入クエリ構文エラー