Unterschied zwischen zwei Tabellen in MySQL

Shraddha Paghdar 20 Juni 2023
Unterschied zwischen zwei Tabellen in MySQL

Im heutigen Beitrag lernen wir, wie man den Unterschied zwischen zwei Tabellen in MySQL findet.

Unterschied zwischen zwei Tabellen in MySQL

Wir müssen häufig zwei Tabellen vergleichen, um Datensätze in einer Tabelle zu finden, die keine übereinstimmenden Datensätze in der anderen haben.

Beispielsweise hat unsere neue Datenbank ein anderes Schema als die Legacy-Datenbank. Es liegt in unserer Verantwortung, alle Daten von der alten Datenbank auf die neue zu übertragen und sicherzustellen, dass die Übertragung erfolgreich ist.

Um die Daten zu überprüfen, müssen wir zwei Tabellen vergleichen – eine aus der alten Datenbank und eine aus der neuen Datenbank – und alle nicht übereinstimmenden Datensätze finden.

Stellen Sie sich eine Situation vor, in der wir die Spalten zweier Tabellen vergleichen müssen, table_1 und table_2. Die folgenden Schritte vergleichen zwei Tabellen, um die Datensätze zu finden, die nicht übereinstimmen.

  1. Verbinden Sie zuerst Zeilen aus beiden Tabellen mit der Anweisung UNION; Fügen Sie nur die erforderlichen Spalten hinzu. Der Vergleich wird anhand der zurückgegebenen Ergebnismenge durchgeführt.

    SELECT table_1.primary_key, table_1.column_1, table_1.column2
    FROM table_1
    UNION ALL
    SELECT table_2.primary_key, table_2.column_1, table_2.column2
    FROM table_2;
    
  2. Die Datensätze sollten dann nach dem Primärschlüssel und den zu vergleichenden Spalten gruppiert werden. Die Funktion COUNT(*) ergibt 2, wenn die Werte in den zu vergleichenden Spalten ähnlich sind; andernfalls wird 1 zurückgegeben.

    SELECT primary_key, column_1, column_2
    FROM
     (
       SELECT table_1.primary_key, table_1.column_1
       FROM table_1
       UNION ALL
       SELECT table_2.primary_key, table_2.column_1
       FROM table_2
    )  temporary_table
    GROUP BY primary_key, column_1, column_2
    HAVING COUNT(*) = 1
    ORDER BY primary_key
    

Betrachten Sie das folgende Beispiel, um die vorherige Idee besser zu verstehen.

SELECT employee_id, department, email
FROM (
    SELECT employee_id, department, email FROM employee_old_table
    UNION ALL
    SELECT employee_id,department, email FROM employee_new_table
) temporary_table
GROUP BY employee_id, department, email
HAVING count(*) = 1
ORDER BY employee_id;

Das obige Beispiel vergleicht die alten und neuen Mitarbeitertabellen, und die Ergebnisse werden in einer temporary_table gespeichert. Nach der Rückgabe des Ergebnisses gruppieren wir dann nach employee_id, Abteilungsname und E-Mail-ID.

Wenn die Werte in den zu vergleichenden Spalten identisch sind, gibt die Methode COUNT(*) 2 zurück; andernfalls wird 1 zurückgegeben. Daher verwenden wir die HAVING-Klausel, um den eindeutigen Wert zu prüfen.

Schließlich drucken wir das Ergebnis in aufsteigender Reihenfolge der employee_id.

Führen Sie die obige Codezeile in jedem mit MySQL kompatiblen Browser aus. Es wird das folgende Ergebnis angezeigt:

+-------------+--------------------+----------------------+
| employee_id |     department     |         email        |
+-------------+--------------------+----------------------+
| 14          | TeleCom            | john_doe@example.com |
| 15          | TeleCommunication  | johndoe@example.com  |
+-------------+--------------------+----------------------+
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

Verwandter Artikel - MySQL Table