ホームページ > データベース > mysql チュートリアル > PostgreSQL の ORDER BY 句でエイリアスを適切に使用するにはどうすればよいですか?

PostgreSQL の ORDER BY 句でエイリアスを適切に使用するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-31 11:42:10
オリジナル
952 人が閲覧しました

How to Properly Use Aliases in PostgreSQL's ORDER BY Clause?

PostgreSQL ORDER BY 句でのエイリアスによる順序付け

PostgreSQL では、ORDER BY 句でエイリアスを使用するのが難しい場合があります。次のクエリについて考えてみましょう:

SELECT 
    title, 
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    global_stock = 0,
    title;
ログイン後にコピー

PostgreSQL 8.1.23 でこのクエリを実行すると、「エラー: 列 "global_stock" が存在しません」というエラーが発生します。これを解決するには、主に 2 つのアプローチがあります。

列番号を使用する

最初のアプローチは、エイリアスの代わりに列番号で順序付けすることです。この場合、クエリは次のようになります。

SELECT 
    title, 
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    2, 1;
ログイン後にコピー

ここで、「2」は 2 番目の列、つまりエイリアス「global_stock」を指します。

サブクエリの使用

別のアプローチは、元のクエリをサブクエリでラップし、サブクエリ内のエイリアスで順序付けすることです。クエリは次のようになります:

SELECT *
FROM
(
    SELECT 
        title, 
        (stock_one + stock_two) AS global_stock
    FROM 
        product
) AS x
ORDER BY 
    (CASE WHEN global_stock = 0 THEN 1 ELSE 0 END) DESC,
    title;
ログイン後にコピー

この場合、エイリアス「global_stock」がサブクエリ内で使用され、ORDER BY 句がサブクエリの結果セットに適用されます。

以上がPostgreSQL の ORDER BY 句でエイリアスを適切に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート