Rumah >pangkalan data >tutorial mysql >Mengapa MySQL LEFT JOIN Hanya Mengembalikan Satu Baris Daripada Semua Baris daripada Jadual Utama?

Mengapa MySQL LEFT JOIN Hanya Mengembalikan Satu Baris Daripada Semua Baris daripada Jadual Utama?

Susan Sarandon
Susan Sarandonasal
2024-12-28 06:01:13431semak imbas

Why Does My MySQL LEFT JOIN Only Return One Row Instead of All Rows from the Primary Table?

Kiri Sertai Tidak Mengembalikan Semua Baris

Soalan Asal:

Pertanyaan MySQL yang melibatkan sambung luar kiri hanya mengembalikan satu baris dan bukannya semua baris dalam jadual utama. Syarat gabungan termasuk penapis pada medan dalam jadual kedua. Bagaimanakah semua baris daripada jadual utama boleh dipilih, termasuk nilai daripada jadual kedua yang medan memenuhi kriteria penapis?

Penyelesaian:

Isu ini berpunca daripada meletakkan keadaan WHERE selepas JOIN. Dengan mengalihkannya ke klausa JOIN itu sendiri, pertanyaan memastikan gabungan itu hanya sepadan dengan baris yang memenuhi kriteria penapis. Berikut ialah pertanyaan yang diubah suai:

SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23

Dalam pertanyaan ini, keadaan WHERE tidak lagi dalam klausa WHERE yang berasingan selepas JOIN. Sebaliknya, ia telah dimasukkan ke dalam klausa ON bagi JOIN, memastikan bahawa hanya baris dengan pr7.field ialah 23 digabungkan. Ini membolehkan semua baris daripada jos_hp_properties dipilih, termasuk baris yang tidak mempunyai padanan dalam jos_hp_properties2, yang akan mempunyai nilai NULL untuk pr7.value.

Atas ialah kandungan terperinci Mengapa MySQL LEFT JOIN Hanya Mengembalikan Satu Baris Daripada Semua Baris daripada Jadual Utama?. 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