Menyelesaikan masalah ralat pertanyaan SQL "lajur tidak wujud"
Apabila melaksanakan pertanyaan SQL, anda mungkin menghadapi ralat "lajur tidak wujud". Ini amat membingungkan apabila lajur kelihatan wujud dalam takrif jadual.
Contoh adegan
Pertimbangkan pertanyaan berikut:
<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>
Pertanyaan ini cuba mendapatkan semula data daripada dua jadual main_sim dan nombor_utama berdasarkan hubungan kunci asing FK_Numbers_id. Walau bagaimanapun, semasa melaksanakan pertanyaan, saya menerima ralat berikut:
<code>ERROR: column "fk_numbers_id" does not exist</code>
Penyelesaian
Selepas menyemak definisi jadual menggunakan arahan d main_sim
anda akan melihat bahawa lajur itu wujud, bernama FK_Numbers_id, dan bukan fk_numbers_id yang dinyatakan dalam pertanyaan.
<code class="language-sql">dbMobile=# \d main_sim ... FK_Numbers_id | integer | </code>
Penjelasan
Dalam kes ini, nama lajur adalah sensitif huruf besar-besaran kerana definisi jadual menggunakan petikan berganda. Oleh itu, rujukan lajur dalam pertanyaan juga mesti menggunakan petikan berganda untuk memadankan kes tepat nama lajur.
Pertanyaan diperbetulkan
Untuk menyelesaikan isu ini, sila ubah suai pertanyaan seperti berikut:
<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>
Pertanyaan diperbetulkan ini menggunakan petikan berganda di sekeliling nama lajur dalam klausa LEFT JOIN, memastikan padanan yang betul dengan definisi jadual. Dengan melaraskan rujukan lajur agar sepadan dengan kes tepat nama lajur, pertanyaan kini akan berjaya dilaksanakan.
Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Gagal dengan Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!