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

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