Rujukan lajur samar-samar dalam pernyataan SQL SELECT
Dalam SQL, kekaburan berlaku apabila berbilang lajur berkongsi nama yang sama dalam jadual berbeza yang terlibat dalam pertanyaan. Apabila lajur ini dipilih, lajur yang dirujuk oleh pertanyaan adalah samar-samar, yang membawa kepada ralat seperti "Rujukan lajur samar-samar."
Pernyataan Masalah
Apabila cuba melaksanakan pernyataan SELECT berikut, anda akan menghadapi masalah seperti itu:
<code class="language-sql">SELECT (id,name) FROM v_groups vg INNER JOIN people2v_groups p2vg ON vg.id = p2vg.v_group_id WHERE p2vg.people_id = 0;</code>
Pertanyaan ini cuba mendapatkan semula lajur id dan nama daripada jadual v_groups. Walau bagaimanapun, mesej ralat dikembalikan: "ID rujukan lajur adalah samar-samar".
Punca kekaburan
Kekaburan timbul kerana kedua-dua jadual v_groups dan people2v_groups mengandungi lajur bernama id. Tanpa menyatakan nama jadual atau alias, pertanyaan tidak boleh menentukan lajur id yang harus diambil.
Penyelesaian
Untuk menyelesaikan kekaburan, nyatakan secara eksplisit nama jadual atau alias sebelum nama lajur dalam bahagian PILIH pertanyaan. Ini menjelaskan kepada pangkalan data lajur id yang harus digunakan.
Pertanyaan diperbetulkan:
<code class="language-sql">SELECT (vg.id, name) FROM v_groups vg INNER JOIN people2v_groups p2vg ON vg.id = p2vg.v_group_id WHERE p2vg.people_id = 0;</code>
Dengan menambahkan vg. sebelum id, pertanyaan merujuk secara eksplisit lajur id dalam jadual v_groups, dengan itu menghapuskan kekaburan dan membenarkan pertanyaan dilaksanakan dengan jayanya.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Rujukan Lajur adalah Samar-samar' dalam Pernyataan SQL SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!