Rumah >pangkalan data >tutorial mysql >Mengapa Mencampurkan JOIN dan Koma dalam Pertanyaan MySQL Menyebabkan Ralat 'Lajur Tidak Diketahui'?

Mengapa Mencampurkan JOIN dan Koma dalam Pertanyaan MySQL Menyebabkan Ralat 'Lajur Tidak Diketahui'?

Barbara Streisand
Barbara Streisandasal
2025-01-09 10:46:49494semak imbas

Why Does Mixing JOINs and Commas in MySQL Queries Cause

Mencampurkan JOIN dan koma dalam pertanyaan MySQL menyebabkan ralat

Huraian Masalah

Apabila melaksanakan pertanyaan MySQL berikut:

<code class="language-sql">SELECT m.*, t.*
FROM memebers as m, telephone as t
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber
WHERE mf.function = 32</code>

akan menghadapi ralat berikut:

<code>#1054 - Unknown column 'm.id' in 'on clause'</code>

Pertanyaan gagal walaupun lajur wujud. Ralat ini berlaku apabila sintaks ANSI 1992 JOIN dan koma digunakan bersama dalam pertanyaan.

Penyelesaian

Menurut dokumentasi MySQL, mencampurkan JOIN dan koma harus dielakkan. Untuk menyelesaikan isu ini, gantikan koma dengan operator JOIN yang sesuai (SANGLANG, DALAM, KIRI).

Pertanyaan yang dikemas kini menggunakan INNER JOIN adalah seperti berikut:

<code class="language-sql">SELECT m.*, t.*
FROM memebers as m
INNER JOIN telephone as t ON <join condition>
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>

Perhatikan bahawa syarat cantuman antara m dan t hendaklah dinyatakan untuk mengelakkan produk Cartesian.

Nota Tambahan

Untuk kejelasan dan kecekapan, operator JOIN harus digunakan dan bukannya koma. Koma menunjukkan CROSS JOIN, yang boleh menyebabkan tingkah laku yang tidak dijangka, terutamanya apabila menggabungkan berbilang jadual. Dengan menggunakan operator JOIN yang jelas, anda boleh mentakrifkan perhubungan tertentu antara jadual untuk memastikan anda mendapat hasil yang anda inginkan.

Atas ialah kandungan terperinci Mengapa Mencampurkan JOIN dan Koma dalam Pertanyaan MySQL Menyebabkan Ralat 'Lajur Tidak Diketahui'?. 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