Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan MySQL Saya Mengembalikan Keputusan Lebih Sedikit Daripada Jangkaan?

Mengapa Pertanyaan MySQL Saya Mengembalikan Keputusan Lebih Sedikit Daripada Jangkaan?

Linda Hamilton
Linda Hamiltonasal
2024-11-26 02:46:10220semak imbas

Why is My MySQL Query Returning Fewer Results Than Expected?

Membezakan Antara MySQL JOIN dan LEFT JOIN

Dalam konteks pertanyaan pangkalan data, memahami nuansa antara jenis gabungan berbeza adalah penting. Apabila menghadapi ralat seperti yang diterangkan, adalah penting untuk menyelidiki perbezaan antara JOIN biasa dan LEFT JOIN.

Jenis Sertai Lalai

Bertentangan dengan andaian anda, jenis join lalai dalam MySQL ialah INNER JOIN, bukan LEFT JOIN. Ini bermakna jika anda mengetepikan jenis gabungan, ia lalai kepada INNER JOIN.

Memahami Perbezaan

INNER JOIN, seperti yang digambarkan dalam ilustrasi visual, sepadan baris dengan nilai sepunya daripada jadual yang mengambil bahagian. Sebaliknya, LEFT JOIN merangkumi semua baris dari jadual kiri (dalam kes anda, DM_Server.Jobs) dan hanya baris yang sepadan dari jadual kanan. Jika tiada padanan, hasilnya termasuk nilai nol untuk data yang hilang.

Penyelesaian

Untuk mendapatkan gelagat yang diingini untuk mengembalikan semua baris dari jadual kiri, anda boleh secara eksplisit menggunakan LEFT JOIN:

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")
        LEFT JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
        ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Saya Mengembalikan Keputusan Lebih Sedikit Daripada Jangkaan?. 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