首頁 > 資料庫 > 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」不存在」。要解決此問題,有兩種主要方法:

使用列號

第一種方法是按列號而不是別名進行排序。在這種情況下,查詢將如下所示:

SELECT 
    title, 
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    2, 1;
登入後複製

這裡,「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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板