MySQL-Praxiskenntnisse: Analyse von Methoden zum Vergleichen, ob zwei Tabellen unterschiedliche Daten haben

MySQL-Praxiskenntnisse: Analyse von Methoden zum Vergleichen, ob zwei Tabellen unterschiedliche Daten haben

Dieser Artikel beschreibt anhand eines Beispiels, wie MySQL zwei Tabellen vergleicht, um festzustellen, ob sie unterschiedliche Daten enthalten. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Bei der Datenmigration müssen wir häufig zwei Tabellen vergleichen, um Datensätze in einer Tabelle zu identifizieren, für die es in der anderen Tabelle keine entsprechenden Datensätze gibt.

Beispielsweise haben wir eine neue Datenbank mit einem anderen Schema als die alte. Unsere Aufgabe besteht darin, alle Daten von der alten Datenbank in die neue Datenbank zu migrieren und zu überprüfen, ob die Daten korrekt migriert wurden. Um die Daten zu überprüfen, müssen wir zwei Tabellen vergleichen, eine in der neuen Datenbank und eine in der alten Datenbank, und die Datensätze identifizieren, die nicht übereinstimmen.

Angenommen, es gibt zwei Tabellen: t1 und t2. Verwenden Sie die folgenden Schritte, um die beiden Tabellen zu vergleichen und die nicht übereinstimmenden Datensätze zu identifizieren. Die übliche Idee besteht darin, zuerst t1 zu überprüfen, dann den Datenergebnissatz zu durchlaufen und die anderen Tabellen nacheinander abzufragen. Wenn die Daten gefunden werden können, sind sie korrekt. Wenn nicht, fehlen die Daten.

Wenn das stimmt, dann sind Sie wirklich zu jung und zu einfach. Dieses Mal stellen wir eine einfachere Lösung zum Datenvergleich vor. Dabei werden zwei Tabellen mithilfe von „Union All“ verknüpft und die Daten anschließend mithilfe einer temporären Tabelle oder einer abgeleiteten Tabelle verglichen. Schauen wir uns das SQL-Beispiel für „Union All“ an:

WÄHLEN Sie t1.pk, t1.c1
VON t1
UNION ALLE
WÄHLEN Sie t2.pk, t2.c1
VON t2

Danach erstellen wir zwei Tabellen und fügen einige Daten ein. Danach können wir es testen. Schauen wir uns zuerst die Erstellung der Tabelle an:

TABELLE ERSTELLEN t1(
 id int auto_increment Primärschlüssel,
  Titel varchar(255) 
);
TABELLE ERSTELLEN t2(
 id int auto_increment Primärschlüssel,
  Titel varchar(255),
  Hinweis varchar(255)
);

Fügen Sie anschließend Daten in t1 ein:

INSERT INTO t1(Titel)
WERTE('Zeile 1'),('Zeile 2'),('Zeile 3');

Fügen wir Daten in t2 ein:

INSERT INTO t2(Titel)
WERTE('Zeile 1'),('Zeile 2'),('Zeile 3');

OK, verwenden wir abgeleitete Tabellen, um Daten zu vergleichen:

Wählen Sie ID, Titel
AUS (
  Wählen Sie ID, Titel aus t1
  UNION ALLE
  Wählen Sie ID, Titel aus t2
) tbl
GRUPPE NACH ID, Titel
HAVING count(*) = 1
BESTELLEN NACH ID;

Natürlich gibt es nach dem Ausführen keine Rückgabedaten, da zwischen ihnen kein Unterschied besteht. Keine Sorge, fügen wir eine weitere Datenzeile in die Tabelle t2 ein:

INSERT INTO t2(Titel,Notiz)
VALUES('neue Zeile 4','neu');

Danach vergleichen wir die Werte der Titelspalte in den beiden Tabellen erneut. Da es sich bei der neuen Zeile um eine nicht übereinstimmende Zeile handelt, wird sie zurückgegeben. Schauen wir uns die Ergebnisse an:

mysql> SELECT id,titel
AUS (
  Wählen Sie ID, Titel aus t1
  UNION ALLE
  Wählen Sie ID, Titel aus t2
) tbl
GRUPPE NACH ID, Titel
HAVING count(*) = 1
BESTELLEN NACH ID;
+----+-----------+
| ID | Titel |
+----+-----------+
| 4 | neue Zeile 4 |
+----+-----------+
1 Reihe im Set

Okay, das sind alle Tipps für dieses Mal.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Leistungsvergleichstest der beiden Tabellenspeicherstrukturen von MySQL, MyISAM und InnoDB
  • Importieren Sie Daten aus verschiedenen Tabellen in verschiedenen Datenbanken in MySQL
  • Suchen Sie nach doppelten Datensätzen in der MySQL-Tabelle
  • So löschen Sie Tabellendaten in MySQL
  • So löschen Sie schnell alle Tabellen in MySQL, ohne die Datenbank zu löschen
  • So fragen Sie doppelte Daten in einer MySQL-Tabelle ab
  • So erhalten Sie den Feldnamen und detaillierte Informationen einer MySQL-Tabelle in PHP
  • Stapelverarbeitung von Feldinhalten, Löschen, Kopieren und anderen Aktualisierungsbefehlen für MySQL-Datentabellen
  • So kopieren Sie schnell MySQL-Datenbanktabellen
  • MySQL verwendet die Select-Anweisung, um die Daten der angegebenen Spalte (Feld) in der angegebenen Tabelle abzufragen
  • Neue Felder (Spalten) zu bestehenden Tabellen in der MySQL-Datenbank hinzufügen
  • SQL-Anweisung zum Abfragen des von allen Datenbanken belegten Speicherplatzes und der Größe aller Tabellen in einer einzelnen Datenbank in MySQL

<<:  VScode Remote SSH-Remote-Bearbeitung und -Debugging von Code

>>:  JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

Artikel empfehlen

Nginx-Signalsteuerung

Einführung in Nginx Nginx ist ein leistungsstarke...

Detaillierte Erläuterung der gespeicherten Prozeduren und Funktionen von MySQL

1 Gespeicherte Prozedur 1.1 Was ist eine gespeich...

Tipps zur Verwendung kleiner HTML-Tags

Phrasenelemente wie <em></em> können d...

Implementierung der Docker-Bereitstellung von ElasticSearch und ElasticSearch-Head

In diesem Artikel wird hauptsächlich erläutert, w...

Vuex implementiert einfache Warenkorbfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der Methoden zum Löschen des Cache im Linux-System

1) Einführung in den Cache-Mechanismus Um die Lei...

Zusammenfassung der 10 gängigen HBase-Betriebs- und Wartungstools

Zusammenfassung: HBase verfügt über zahlreiche Be...

Schritte zum Erstellen eines Docker-Images mit Dockerfile

Dockerfile ist eine Textdatei, die Anweisungen en...

Detaillierte Schritte zur Installation von MySQL mit Cluster-RPM

MySQL-Datenbank installieren a) Laden Sie das MyS...

Data URI und MHTML Komplettlösung für alle Browser

Daten-URI Data URI ist ein durch RFC 2397 definie...