Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Oleh Alias dalam PostgreSQL dan Elakkan Ralat 'Column Not Exist'?
Cara Memesan Oleh Alias dalam PostgreSQL: Menyelesaikan Ralat "Column Not Exist"
Dalam PostgreSQL, apabila bekerja dengan alias, anda mungkin menghadapi ralat semasa memesan keputusan. Sebagai contoh, pertimbangkan pertanyaan berikut:
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY global_stock = 0, title;
Melaksanakan pertanyaan ini dalam PostgreSQL 8.1.23 berkemungkinan akan menghasilkan ralat: Query failed: ERROR: column "global_stock" does not exist. Ralat ini berlaku kerana alias "global_stock" tidak dikenali sebagai lajur sedia ada dalam jadual "produk".
Untuk menyelesaikan isu ini, anda mempunyai beberapa pilihan:
Pilihan 1: Susun Mengikut Kedudukan
PostgreSQL membenarkan pesanan mengikut kedudukan lajur dan bukannya namanya. Sebagai contoh, anda boleh menulis:
select title, ( stock_one + stock_two ) as global_stock from product order by 2, 1
Pertanyaan ini menyusun keputusan terlebih dahulu mengikut lajur kedua (iaitu "saham_global"), dan kemudian dengan lajur pertama (iaitu "tajuk").
Pilihan 2: Balut dalam Subkueri
Kaedah lain melibatkan membungkus pertanyaan asal anda dalam subquery dan menggunakan pernyataan CASE untuk mengendalikan pesanan:
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
Pertanyaan ini mula-mula mencipta subquery yang mengira nilai "global_stock". Subquery kemudiannya dibalut dalam pernyataan SELECT lain yang menggunakan pernyataan CASE untuk memesan keputusan berdasarkan ketersediaan item (0 untuk tersedia, 1 untuk tidak tersedia).
Atas ialah kandungan terperinci Bagaimana untuk Memesan Oleh Alias dalam PostgreSQL dan Elakkan Ralat 'Column Not Exist'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!