Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Rujukan lajur 'id' adalah samar-samar' SQL?

Bagaimana untuk Menyelesaikan Ralat 'Rujukan lajur 'id' adalah samar-samar' SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-18 07:36:08821semak imbas

How to Resolve SQL's

Menyelesaikan Ralat "Rujukan Lajur Ambiguous" SQL: Kes Lajur 'id' Pendua

Apabila membina SELECT pertanyaan yang melibatkan berbilang jadual dengan nama lajur biasa (seperti lajur "id" di mana-mana), anda mungkin menghadapi ralat "rujukan lajur 'id' adalah samar-samar" yang digeruni. Ini berlaku kerana SQL tidak tahu lajur "id" jadual yang anda ingin dapatkan.

Penyelesaian adalah mudah: Sentiasa layakkan nama lajur anda dengan alias jadual masing-masing atau nama jadual penuh.

Sebagai contoh, jika pertanyaan anda menyertai v_groups (disebut sebagai vg) dan people2v_groups (dinyatakan sebagai p2vg), kedua-duanya mengandungi lajur "id", pertanyaan samar-samar:

<code class="language-sql">SELECT (id, name) -- Ambiguous!
FROM v_groups vg
INNER JOIN people2v_groups p2vg
  ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;</code>

hendaklah ditulis semula untuk menyatakan secara eksplisit sumber jadual untuk lajur "id":

<code class="language-sql">SELECT (vg.id, name) -- Unambiguous!
FROM v_groups vg
INNER JOIN people2v_groups p2vg
  ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;</code>

Dengan menggunakan vg.id, kami dengan jelas menunjukkan bahawa kami mahukan "id" daripada jadual v_groups. Ini menghapuskan kekaburan dan memastikan pertanyaan anda dilaksanakan dengan betul.

Ringkasnya: Setiap kali berurusan dengan berbilang jadual berkongsi nama lajur, sentiasa awalan nama lajur anda dengan alias jadual yang sepadan (atau nama jadual penuh) untuk mengelakkan kekaburan dan menjamin hasil pertanyaan yang tepat.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Rujukan lajur 'id' adalah samar-samar' SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn