Memahami JOIN vs LEFT JOIN dalam MySQL
Operasi JOIN MySQL membolehkan kami menggabungkan data daripada berbilang jadual dengan menentukan lajur biasa di antaranya. Walau bagaimanapun, adalah penting untuk memahami perbezaan antara pelbagai jenis cantuman, terutamanya JOIN DALAM dan SERTAI KIRI.
Pertimbangkan pertanyaan silang pangkalan data 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` 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
Ralat Pelaksanaan Pertanyaan dengan LEFT JOIN
Apabila anda cuba menukar semua INNER JOIN kepada LEFT SERTAI dalam pertanyaan, anda mungkin menghadapi ralat. Ini kerana, secara lalai, MySQL menggunakan INNER JOIN apabila tiada jenis gabungan eksplisit dinyatakan. LEFT JOIN mesti dinyatakan secara eksplisit menggunakan kata kunci "LEFT JOIN".
Default Joint Type
Bertentangan dengan kepercayaan popular, lalai jenis join dalam MySQL bukan LEFT JOIN tapi INNER JOIN. Gabungan dalam hanya mengembalikan baris yang mempunyai nilai yang sepadan dalam lajur gabungan merentas semua jadual yang terlibat dalam pertanyaan.
Perwakilan Visual bagi Gabungan
Untuk lebih memahami perbezaan antara INNER SERTAI dan KIRI SERTAI, pertimbangkan perwakilan visual berikut:
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 2 | C2 | D2 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1 | A2 | B2 | NULL | NULL
Seperti yang anda lihat, LEFT JOIN merangkumi semua baris dari jadual kiri (Jadual 1) dan memadankannya dengan baris dari jadual kanan (Jadual 2) apabila terdapat perlawanan. Jika tiada padanan, nilai NULL disertakan untuk lajur yang tiada.
Atas ialah kandungan terperinci Apakah jenis JOIN lalai dalam MySQL dan bagaimana ia berbeza daripada LEFT JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!