Rumah >pangkalan data >tutorial mysql >Mengapa Gabungan Kiri Saya Tidak Mengembalikan Semua Baris Dari Jadual Kiri?

Mengapa Gabungan Kiri Saya Tidak Mengembalikan Semua Baris Dari Jadual Kiri?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 15:01:141023semak imbas

Why Doesn't My Left Join Return All Rows From the Left Table?

Kiri Sertai Tidak Mengembalikan Semua Baris: Menangani Isu

Seperti yang dibincangkan dalam urutan sebelumnya, ketiadaan semua baris dalam gabungan kiri pertanyaan boleh berpunca daripada klausa WHERE yang diletakkan dengan tidak betul. Dalam kes ini, pertanyaan bertujuan untuk mengekstrak data daripada jadual 'jos_hp_properties' dan secara pilihan memilih nilai bernama 'room_price_high' daripada jadual 'jos_hp_properties2' berdasarkan lajur medan yang sama dengan 23.

Untuk menyelesaikan masalah ini mengeluarkan dan memastikan pengembalian semua baris dari jadual pertama, keadaan WHERE harus dipindahkan dari kedudukan asalnya selepas LEFT Kenyataan OUTER JOIN ke dalam klausa JOIN itu sendiri. Pertanyaan yang diubah suai sepatutnya menyerupai ini:

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 memasukkan keadaan WHERE dalam JOIN, pertanyaan menjadi lebih jelas dan mengarahkan pangkalan data untuk hanya mengambil baris daripada jadual kedua di mana lajur medan adalah sama dengan 23 . Ini memastikan bahawa semua baris daripada jadual pertama dikembalikan, tidak kira sama ada nilai yang sepadan wujud dalam jadual kedua. Akibatnya, nilai NULL yang sepadan akan dikembalikan untuk baris dalam jadual pertama yang tidak mempunyai baris yang sepadan dalam jadual kedua berdasarkan kriteria medan=23.

Atas ialah kandungan terperinci Mengapa Gabungan Kiri Saya Tidak Mengembalikan Semua Baris Dari Jadual Kiri?. 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