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;
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:
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;
Di sini, "2" merujuk kepada lajur kedua, iaitu alias "global_stock".
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;
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!