PostgreSQL: ORDER BY で ALIAS を使用した結果の順序付け
PostgreSQL では、ORDER BY 句でエイリアスを使用すると問題が発生する可能性があります。提供されたクエリに示されているように、ORDER BY でエイリアスを直接参照すると、エラー メッセージが表示される可能性があります。
エラーの説明:
PostgreSQL では、ORDER BY 句で次を参照する必要があります。結果セットに存在する列。このクエリでは、エイリアス「global_stock」が最終結果セットの列に対応していないため、エラーが発生します。
解決策:
2 つのアプローチがあります。この問題を解決するには:
方法 1: SELECT の順序を変更するリスト:
エイリアスが 2 番目 (またはそれ以降) の式として表示されるように SELECT リストを並べ替えます。次のクエリは機能します:
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY 2, 1;
この並べ替えにより、エイリアスが ORDER BY 句で正しく参照されることが保証されます。
方法 2: サブクエリの使用:
元の選択をラップするサブクエリを作成し、外側でエイリアスを使用しますクエリの ORDER BY 句。例:
SELECT * FROM ( SELECT title, (stock_one + stock_two) AS global_stock FROM product ) x ORDER BY (CASE WHEN global_stock = 0 THEN 1 ELSE 0 END) DESC, title;
このサブクエリのアプローチでは、ネストされた SELECT ステートメント内でエイリアス「global_stock」が使用され、ネストされた結果セットが外側のクエリで順序付けされます。
以上がPostgreSQL の ORDER BY 句でエイリアスを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。