Rumah  >  Artikel  >  pangkalan data  >  Apakah jenis JOIN lalai dalam MySQL dan bagaimana ia berbeza daripada LEFT JOIN?

Apakah jenis JOIN lalai dalam MySQL dan bagaimana ia berbeza daripada LEFT JOIN?

Patricia Arquette
Patricia Arquetteasal
2024-11-16 08:56:02231semak imbas

What is the default JOIN type in MySQL and how does it differ from LEFT JOIN?

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:

  • DALAMAN JOIN:
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
  • LEFT JOIN:
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!

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