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
1002 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!

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