Mengatasi Lajur 'id' Samar-samar dalam Pertanyaan MySQL
Bekerja dengan berbilang jadual berkongsi nama lajur (seperti "id") selalunya membawa kepada ralat "Lajur 'id' dalam senarai medan adalah samar-samar". Ini timbul apabila pertanyaan anda memilih lajur 'id' tanpa menyatakan jadual sumbernya.
MySQL menawarkan dua penyelesaian yang jelas:
1. Penamaan Jadual Eksplisit atau Aliasing
Awalan lajur 'id' dengan nama jadualnya untuk pengenalan yang tidak jelas:
<code class="language-sql">SELECT tbl_names.id, tbl_section.id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id;</code>
2. Kaedah Pilihan: ANSI-92 JOIN Sintaks
Pendekatan ini menggunakan alias untuk kod yang lebih bersih dan mudah dibaca:
<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' dan 's' ialah alias untuk tbl_names
dan tbl_section
, masing-masing. Ini menghapuskan kekaburan.
Amalan Terbaik: Terima Alias
Menggunakan alias (kaedah 2) amat disyorkan. Ia menghasilkan pertanyaan yang lebih padat dan mudah difahami, terutamanya apabila menggunakan jadual yang sama beberapa kali.
Mengapa Memilih ANSI-92 JOIN?
Walaupun MySQL masih menyokong sintaks ANSI-89 JOIN yang lebih lama (digunakan secara tersirat dalam senarai jadual yang dipisahkan koma), ANSI-92 adalah lebih baik. Ia menawarkan sokongan penting untuk gabungan OUTER (KIRI, KANAN, PENUH), fungsi yang tiada dalam ANSI-89. Walaupun MySQL mengekalkan keserasian ke belakang dengan ANSI-89, penggunaan standard ANSI-92 moden ialah amalan terbaik untuk kejelasan dan kefungsian yang dipertingkatkan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'Lajur 'id' dalam senarai medan adalah samar-samar' dalam Pertanyaan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!