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

Bagaimana untuk Menggunakan Alias ​​dengan betul dalam Klausa ORDER BY PostgreSQL?

DDD
Lepaskan: 2024-12-31 13:32:11
asal
986 orang telah melayarinya

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

PostgreSQL: Memesan Keputusan Menggunakan ALIAS mengikut ORDER BY

Dalam PostgreSQL, menggunakan alias dalam klausa ORDER BY boleh menimbulkan cabaran. Seperti yang ditunjukkan dalam pertanyaan yang disediakan, merujuk alias secara langsung dalam ORDER BY boleh mengakibatkan mesej ralat.

Penjelasan Ralat:

PostgreSQL memerlukan rujukan klausa ORDER BY lajur yang wujud dalam set hasil. Dalam pertanyaan ini, alias "global_stock" tidak sepadan dengan lajur dalam set hasil akhir, oleh itu ralat berlaku.

Penyelesaian:

Terdapat dua pendekatan untuk menyelesaikan isu ini:

Kaedah 1: Menyusun semula SELECT Senarai:

Susun semula senarai PILIH supaya alias muncul sebagai ungkapan kedua (atau seterusnya). Pertanyaan berikut akan berfungsi:

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

Penyusunan semula ini memastikan bahawa alias dirujuk dengan betul dalam klausa ORDER BY.

Kaedah 2: Menggunakan Subquery:

Buat subkueri yang membungkus pilihan asal dan gunakan alias dalam pertanyaan luar URUSAN MENGIKUT klausa. Contohnya:

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

Dalam pendekatan subkueri ini, alias "global_stock" digunakan dalam pernyataan SELECT bersarang dan set hasil bersarang kemudiannya disusun dalam pertanyaan luar.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Alias ​​dengan betul 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan