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

Patricia Arquette
Lepaskan: 2024-11-16 08:56:02
asal
229 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk
  • 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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan