Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Oleh Alias ​​dalam PostgreSQL dan Elakkan Ralat 'Column Not Exist'?

Bagaimana untuk Memesan Oleh Alias ​​dalam PostgreSQL dan Elakkan Ralat 'Column Not Exist'?

Patricia Arquette
Patricia Arquetteasal
2024-12-22 18:09:15895semak imbas

How to Order By an Alias in PostgreSQL and Avoid the

Cara Memesan Oleh Alias ​​dalam PostgreSQL: Menyelesaikan Ralat "Column Not Exist"

Dalam PostgreSQL, apabila bekerja dengan alias, anda mungkin menghadapi ralat semasa memesan keputusan. Sebagai contoh, pertimbangkan pertanyaan berikut:

SELECT 
    title, 
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    global_stock = 0,
    title;

Melaksanakan pertanyaan ini dalam PostgreSQL 8.1.23 berkemungkinan akan menghasilkan ralat: Query failed: ERROR: column "global_stock" does not exist. Ralat ini berlaku kerana alias "global_stock" tidak dikenali sebagai lajur sedia ada dalam jadual "produk".

Untuk menyelesaikan isu ini, anda mempunyai beberapa pilihan:

Pilihan 1: Susun Mengikut Kedudukan

PostgreSQL membenarkan pesanan mengikut kedudukan lajur dan bukannya namanya. Sebagai contoh, anda boleh menulis:

select 
    title, 
    ( stock_one + stock_two ) as global_stock
from product
order by 2, 1

Pertanyaan ini menyusun keputusan terlebih dahulu mengikut lajur kedua (iaitu "saham_global"), dan kemudian dengan lajur pertama (iaitu "tajuk").

Pilihan 2: Balut dalam Subkueri

Kaedah lain melibatkan membungkus pertanyaan asal anda dalam subquery dan menggunakan pernyataan CASE untuk mengendalikan pesanan:

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

Pertanyaan ini mula-mula mencipta subquery yang mengira nilai "global_stock". Subquery kemudiannya dibalut dalam pernyataan SELECT lain yang menggunakan pernyataan CASE untuk memesan keputusan berdasarkan ketersediaan item (0 untuk tersedia, 1 untuk tidak tersedia).

Atas ialah kandungan terperinci Bagaimana untuk Memesan Oleh Alias ​​dalam PostgreSQL dan Elakkan Ralat 'Column Not Exist'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn