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.
-
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;
-
Die Datensätze sollten dann nach dem Primärschlüssel und den zu vergleichenden Spalten gruppiert werden. Die Funktion
COUNT(*)
ergibt2
, wenn die Werte in den zu vergleichenden Spalten ähnlich sind; andernfalls wird1
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 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