Mengendalikan Ambiguous id
Lajur dalam SQL Joins
Pertanyaan SQL yang melibatkan berbilang jadual dengan lajur yang dinamakan sama (seperti medan id
yang terdapat dalam kedua-dua tbl_names
dan tbl_section
) sering menghasilkan ralat kekaburan. Ini timbul apabila memilih lajur id
tanpa menyatakan jadual asalnya. Mesej ralat biasanya berbunyi: "1052: Lajur 'id' dalam senarai medan adalah samar-samar."
Untuk mengelakkan perkara ini, SQL menyediakan penyelesaian yang mudah: melayakkan nama lajur dengan nama jadual atau aliasnya.
Menggunakan Nama Jadual:
Pendekatan eksplisit menggunakan nama jadual penuh untuk menentukan lajur id
:
<code class="language-sql">SELECT tbl_names.id, tbl_section.id, name, section FROM tbl_names JOIN tbl_section ON tbl_section.id = tbl_names.id;</code>
Ini dengan jelas menunjukkan yang id
kepunyaan jadual mana.
Menggunakan Alias Jadual:
Kaedah yang lebih ringkas dan boleh dibaca menggunakan alias:
<code class="language-sql">SELECT n.id, s.id, n.name, s.section FROM tbl_names n JOIN tbl_section s ON s.id = n.id;</code>
Di sini, n
mewakili tbl_names
dan s
mewakili tbl_section
, menjadikan pertanyaan lebih pendek dan lebih mudah difahami.
Faedah Alias Jadual:
Alias jadual menawarkan beberapa faedah utama:
Pertimbangan Penting:
Pertanyaan asal mungkin menggunakan sintaks ANSI-89 SQL yang lebih lama, yang tidak mempunyai sokongan untuk gabungan OUTER. Sintaks ANSI-92 JOIN moden disyorkan untuk keserasian dan sokongan yang lebih baik untuk gabungan INNER dan OUTER.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Rujukan Medan ID Ambiguous dalam SQL Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!