Rumah > pangkalan data > tutorial mysql > Bagaimana Menggunakan Alias ​​dengan Benar dalam Klausa ORDER BY PostgreSQL?

Bagaimana Menggunakan Alias ​​dengan Benar dalam Klausa ORDER BY PostgreSQL?

Barbara Streisand
Lepaskan: 2024-12-31 11:42:10
asal
937 orang telah melayarinya

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

Pemesanan mengikut Alias ​​dalam PostgreSQL ORDER BY Clause

Dalam PostgreSQL, menggunakan alias dalam klausa ORDER BY boleh menjadi rumit. Pertimbangkan pertanyaan berikut:

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

Apabila melaksanakan pertanyaan ini dalam PostgreSQL 8.1.23, ralat ditemui: "ERROR: lajur "global_stock" tidak wujud". Untuk menyelesaikan masalah ini, terdapat dua pendekatan utama:

Menggunakan Nombor Lajur

Pendekatan pertama ialah memesan mengikut nombor lajur dan bukannya alias. Dalam kes ini, pertanyaan akan kelihatan seperti ini:

SELECT 
    title, 
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    2, 1;
Salin selepas log masuk

Di sini, "2" merujuk kepada lajur kedua, iaitu alias "global_stock".

Menggunakan Subquery

Pendekatan alternatif ialah membungkus pertanyaan asal dalam subkueri dan kemudian memesan mengikut alias dalam subkueri. Pertanyaan akan menjadi:

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;
Salin selepas log masuk

Dalam kes ini, alias "global_stock" digunakan dalam subkueri dan klausa ORDER BY digunakan pada set hasil subquery.

Atas ialah kandungan terperinci Bagaimana Menggunakan Alias ​​dengan Benar dalam Klausa ORDER BY PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan