Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Alias ​​dalam ORDER PostgreSQL BY Klausa Tanpa Mendapat Ralat 'lajur tidak wujud'?

Bagaimanakah Saya Boleh Menggunakan Alias ​​dalam ORDER PostgreSQL BY Klausa Tanpa Mendapat Ralat 'lajur tidak wujud'?

DDD
Lepaskan: 2024-12-29 12:18:10
asal
179 orang telah melayarinya

How Can I Use an Alias in a PostgreSQL ORDER BY Clause Without Getting a

Menggunakan ALIAS dalam PostgreSQL ORDER BY Clause

Apabila cuba menggunakan alias dalam klausa ORDER BY pertanyaan PostgreSQL, sesetengah pengguna menghadapi ralat, "column tidak wujud."

Isu Penjelasan

Pertimbangkan contoh berikut:

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

Menjalankan pertanyaan ini dalam PostgreSQL 8.1.23 menghasilkan ralat: "lajur 'global_stock' tidak wujud." Ralat ini berlaku kerana alias tidak dikenali dalam klausa ORDER BY.

Penyelesaian

Terdapat dua penyelesaian yang mungkin:

1. Susunan Berangka:

Daripada menggunakan alias, anda boleh merujuk lajur mengikut kedudukannya dalam klausa SELECT. Dalam contoh di atas, alias 'global_stock' sepadan dengan lajur 2. Oleh itu, pertanyaan yang diubah suai ialah:

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

2. Subkueri dengan Ungkapan CASE:

Pilihan lain ialah menggunakan subkueri dan ungkapan CASE:

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 kes ini, ungkapan CASE memberikan nilai 1 kepada baris dengan 'global_stock' = 0, dan 0 kepada semua yang lain. Pertanyaan kemudiannya mengisih hasil dalam tertib menurun berdasarkan nilai ini, dengan berkesan mengutamakan item yang tersedia.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Alias ​​dalam ORDER PostgreSQL BY Klausa Tanpa Mendapat Ralat 'lajur tidak wujud'?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan