Pertanyaan SQL Tidak Mengembalikan semua Baris dengan Sertai Kiri
Pertanyaan ini bertujuan untuk mendapatkan semula semua baris daripada jadual jos_hp_properties (dipendekkan sebagai pr) bersama dengan nilai daripada jadual jos_hp_properties2 (dipendekkan sebagai pr7), di mana medan bernama medan sama dengan 23 dalam jadual terakhir. Walau bagaimanapun, pertanyaan semasa hanya mengembalikan satu baris, walaupun jadual jos_hp_properties mengandungi 27 baris.
Untuk menangani isu ini, klausa WHERE harus dialihkan ke pernyataan JOIN, seperti berikut:
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
Dengan pertanyaan yang diubah suai ini, klausa WHERE tidak lagi mengehadkan keputusan yang ditetapkan sebelum penyertaan. Sebaliknya, baris daripada jadual jos_hp_properties akan disertakan walaupun tiada baris yang sepadan dalam jadual jos_hp_properties2 untuk medan 23 (dalam keadaan ini nilai yang dikembalikan adalah NULL). Ini memastikan semua baris daripada jadual pertama dikembalikan, bersama-sama dengan data yang dikehendaki daripada jadual kedua, jika berkenaan.
Atas ialah kandungan terperinci Mengapa SQL Saya Kiri Sertai Hanya Mengembalikan Satu Baris Daripada Semua Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!