Menyelesaikan Masalah PostgreSQL LEFT JOIN Ralat: Sensitiviti Kes dan Nama Lajur
Melaksanakan pertanyaan SQL dengan LEFT JOIN
kadangkala boleh mengakibatkan ralat "lajur ... tidak wujud" yang mengecewakan. Ini selalunya berpunca daripada ketidakkonsistenan dalam cara nama lajur dirujuk.
Contoh ini menyerlahkan perangkap biasa: kepekaan huruf besar dalam PostgreSQL. Jadual main_sim
mengandungi lajur kunci asing bernama FK_Numbers_id
. Walaupun definisi jadual (d main_sim
) mengesahkan kewujudannya, pertanyaan gagal kerana nama lajur tidak konsisten dalam huruf besar. Pertanyaan menggunakan FK_Numbers_id
(huruf besar), manakala pangkalan data menyimpannya sebagai fk_numbers_id
(huruf kecil).
Sensitiviti kes PostgreSQL adalah penting di sini. Jika jadual dibuat dengan nama lajur petikan dua kali (seperti yang disyorkan dalam dokumentasi), semua nama lajur menjadi sensitif huruf besar-besaran. Ini bermakna anda mesti menggunakan kes yang tepat – termasuk petikan berganda – dalam pertanyaan anda.
Penyelesaian:
Pertanyaan yang diperbetulkan menggunakan petikan berganda untuk menyatakan secara eksplisit kes nama lajur:
<code class="language-sql">SELECT sim.id AS idsim, num.id AS idnum FROM main_sim sim LEFT JOIN main_number num ON ("FK_Numbers_id" = num.id);</code>
Pengubahsuaian ini memastikan lajur yang betul dirujuk, menyelesaikan ralat "lajur tidak wujud" dan membenarkan LEFT JOIN
untuk dilaksanakan dengan jayanya. Ingat, selongsong yang konsisten dan tepat adalah penting apabila bekerja dengan PostgreSQL, terutamanya apabila berurusan dengan pengecam dua petikan.
Atas ialah kandungan terperinci Mengapa PostgreSQL LEFT JOIN Saya Gagal dengan Ralat 'Lajur Tidak Wujud'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!