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
Lepaskan: 2024-11-26 02:46:10
asal
199 orang telah melayarinya

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

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!

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