Rumah >pangkalan data >tutorial mysql >Apakah perbezaan antara JOIN dan LEFT JOIN dalam MySQL?
Memahami Perbezaan antara JOIN dan LEFT JOIN dalam MySQL
Dalam SQL, menyertai jadual membolehkan kami menggabungkan data daripada berbilang jadual berdasarkan spesifik kriteria. Dua jenis gabungan biasa ialah JOIN dan LEFT JOIN.
JOIN vs LEFT JOIN
JOIN hanya mengembalikan baris yang sepadan dengan syarat gabungan, pada asasnya mencipta subset rekod yang memenuhi kriteria yang ditetapkan. Sebaliknya, LEFT JOIN mengambil semua baris dari jadual kiri dan hanya baris yang mempunyai padanan dalam jadual kanan. Baris tanpa padanan dalam jadual kanan dikembalikan dengan nilai NULL.
Jenis Sertaan Lalai dalam MySQL
Bertentangan dengan andaian pengguna, jenis gabungan lalai dalam MySQL ialah INNER JOIN, yang bermaksud bahawa ia hanya termasuk baris yang memenuhi syarat gabungan. Jika anda ingin menggunakan LEFT JOIN, anda mesti menyatakannya secara eksplisit dalam pertanyaan anda.
Contoh
Pertimbangkan contoh berikut yang diberikan oleh pengguna:
SELECT `DM_Server`.`Jobs`.*, `DM_Server`.servers.Description AS server, digital_inventory.params, products.products_id, products.products_pdfupload, customers.customers_firstname, customers.customers_lastname FROM `DM_Server`.`Jobs` INNER JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf") JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50
Secara lalai, pertanyaan ini menggunakan INNER JOIN, yang hanya mengembalikan kerja yang mempunyai entri sepadan dalam keempat-empat yang disertai meja. Untuk menukarnya kepada LEFT JOIN, anda akan menukar kata kunci JOIN kepada LEFT JOIN, seperti berikut:
SELECT `DM_Server`.`Jobs`.*, `DM_Server`.servers.Description AS server, digital_inventory.params, products.products_id, products.products_pdfupload, customers.customers_firstname, customers.customers_lastname FROM `DM_Server`.`Jobs` LEFT JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID LEFT JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name LEFT JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf") LIMIT 50
Atas ialah kandungan terperinci Apakah perbezaan antara JOIN dan LEFT JOIN dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!