Heim > Datenbank > MySQL-Tutorial > Warum liefert meine MySQL-Abfrage weniger Ergebnisse als erwartet?

Warum liefert meine MySQL-Abfrage weniger Ergebnisse als erwartet?

Linda Hamilton
Freigeben: 2024-11-26 02:46:10
Original
201 Leute haben es durchsucht

Why is My MySQL Query Returning Fewer Results Than Expected?

Unterscheidung zwischen MySQL JOIN und LEFT JOIN

Im Kontext von Datenbankabfragen ist das Verständnis der Nuancen zwischen verschiedenen Join-Typen von entscheidender Bedeutung. Wenn Sie auf Fehler wie den beschriebenen stoßen, ist es wichtig, sich mit den Unterschieden zwischen einem regulären JOIN und einem LEFT JOIN zu befassen.

Standard-Join-Typ

Entgegen Ihrer Annahme Der Standard-Join-Typ in MySQL ist INNER JOIN, nicht LEFT JOIN. Das heißt, wenn Sie die Angabe eines Join-Typs weglassen, wird standardmäßig INNER JOIN verwendet.

Den Unterschied verstehen

Ein INNER JOIN, wie in der visuellen Abbildung dargestellt, stimmt überein Zeilen mit gemeinsamen Werten aus den teilnehmenden Tabellen. Im Gegensatz dazu umfasst ein LEFT JOIN alle Zeilen aus der linken Tabelle (in Ihrem Fall DM_Server.Jobs) und nur die passenden Zeilen aus der rechten Tabelle. Wenn es keine Übereinstimmungen gibt, enthält das Ergebnis Nullwerte für die fehlenden Daten.

Lösung

Um das gewünschte Verhalten der Rückgabe aller Zeilen aus der linken Tabelle zu erhalten, müssen Sie kann explizit einen LEFT JOIN verwenden:

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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum liefert meine MySQL-Abfrage weniger Ergebnisse als erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage