Ein Beispiel zum Abfragen von Daten in MySQL und zum Aktualisieren dieser Daten in eine andere Tabelle basierend auf Bedingungen

Ein Beispiel zum Abfragen von Daten in MySQL und zum Aktualisieren dieser Daten in eine andere Tabelle basierend auf Bedingungen

Dieser Artikel beschreibt anhand eines Beispiels, wie MySQL Daten abfragen und bedingungenabhängig in eine andere Tabelle aktualisieren kann. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Die ursprüngliche Datenbank hat 3 Tabellen

  • travel_way: Reiseroutentabelle, in der detaillierte Informationen zur Route gespeichert sind
  • traveltag: Routen-Tag-Tabelle, in der das Routenziel und andere Informationen gespeichert werden
  • tagrelation: Tag-Korrespondenztabelle, in der die Korrespondenz zwischen Routen und Zielen gespeichert wird

Aufgrund der Änderung der Geschäftslogik müssen wir sie jetzt in einer Tabelle zusammenführen und die Zielinformationen im Reisetag in Reiseweg einfügen.

Suchen Sie zunächst nach den Zielen aller Routen, gruppieren Sie sie nach der Routen-ID, fügen Sie die Ziele in einer Zeile zusammen und trennen Sie sie durch Kommas.

Kopieren Sie den Code wie folgt:
SELECT travel_way.id,GROUP_CONCAT(Reisetag.Inhalt) FROM travel_way LEFT JOIN tagrelation on travel_way.id = tagrelation.travel_id LEFT JOIN traveltag ON tagrelation.tag_id = traveltag.id GROUP BY travel_way.id

Speichern Sie zunächst die gefundenen Daten in einer neu erstellten Tabelle mid

Kopieren Sie den Code wie folgt:
INSERT in Mitte (Reiseweg-ID, Ziel) SELECT travel_way.id,GROUP_CONCAT(Reisetag.Inhalt) FROM travel_way LEFT JOIN tagrelation on travel_way.id = tagrelation.travel_id LEFT JOIN traveltag ON tagrelation.tag_id = traveltag.id GROUP BY travel_way.id

Aktualisieren Sie dann die Daten der mittleren Tabelle auf travel_way. Da es sich um eine Aktualisierung handelt, können Sie die Anweisung insert into select from nicht verwenden.

Kopieren Sie den Code wie folgt:
Aktualisiere Reiseweg, Mitte, setze Reiseweg.Ziel = Mitte.Ziel, wobei Reiseweg.ID = Mitte.Reiseweg-ID

Die Ziele wurden erfolgreich als kommagetrennte Zeichenfolge in die travel_way-Tabelle importiert.

Lassen Sie uns über die verwendeten Methoden sprechen, group_concat

group_concat( [DISTINCT] Zu verbindendes Feld [Order BY Sortierfeld ASC/DESC] [Separator 'separator'] ), diese Funktion kann gleiche Zeilen zusammenfassen

* aus Waren auswählen;
+------+------+
|ID| Preis|
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
+------+------+
6 Zeilen im Satz (0,00 Sek.)

Gruppieren Sie nach ID und drucken Sie die Werte des Preisfelds in derselben Zeile, durch Kommas getrennt (Standard)

Wählen Sie ID, group_concat(Preis) aus der Warengruppe nach ID;
+------+--------------------+
| ID| group_concat(Preis) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200.500|
+------+--------------------+
3 Zeilen im Satz (0,00 Sek.)

Gruppieren nach ID, drucken Sie das Preisfeld in einer Zeile ohne Duplikate, getrennt durch Kommas

Wählen Sie ID, Group_Concat (eindeutiger Preis) aus der Warengruppe nach ID.
+------+-----------------------------+
| ID| group_concat (eindeutiger Preis) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20 |
|3 | 200.500 |
+------+-----------------------------+
3 Zeilen im Satz (0,00 Sek.)

Gruppieren Sie nach ID, drucken Sie den Wert des Preisfelds in einer Zeile, getrennt durch Kommas und sortiert in absteigender Reihenfolge des Preises

Wählen Sie ID, Group_Concat (Preis sortiert nach Preis absteigend) aus der Warengruppe nach ID.
+------+-----------------------------------------+
| ID| group_concat(Preis sortiert nach Preis absteigend) |
+------+-----------------------------------------+
|1 | 20,20,10 |
|2 | 20|
|3 | 500.200|
+------+-----------------------------------------+
3 Zeilen im Satz (0,00 Sek.)

„insert into select from“ fügt insert into select from eine Tabelle ein.

INSERT INTO db1_name(Feld1,Feld2) SELECT Feld1,Feld2 FROM db2_name

Das Ziel db2 muss vorhanden sein. Lassen Sie es uns testen. Es gibt zwei Tabellen mit der folgenden Struktur:

wähle * aus insert_one;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 1 | Tian Xiaosi | 25 | |
| 2 | Liu Daniu | 26 | |
| 3 | Zheng Dachui | 28 | |
| 4 | Hu Ergou | 30 | |
+----+--------+-----+-----+
4 Reihen im Set

 
wähle * aus insert_sex;
+----+-----+
| Ich bin | Geschlecht |
+----+-----+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 2 |
+----+-----+
4 Reihen im Set

Suchen Sie nach Geschlechtsdaten aus Tabelle 2 und fügen Sie diese in Tabelle 1 ein.

in insert_one(Geschlecht) wähle das Geschlecht aus insert_sex;
Abfrage OK, 4 Zeilen betroffen
wähle * aus insert_one;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 1 | Tian Xiaosi | 25 | |
| 2 | Liu Daniu | 26 | |
| 3 | Zheng Dachui | 28 | |
| 4 | Hu Ergou | 30 | |
| 5 | | | 1 |
| 6 | | | 2 |
| 7 | | | 1 |
| 8 | | | 2 |
+----+--------+-----+-----+
8 Reihen im Set

Das Ergebnis ist peinlich. Ich möchte das Geschlechtsfeld dieser Tabelle aktualisieren, anstatt neue Daten einzufügen. Dann ist dieser Befehl nur zum Importieren von Daten in eine leere Tabelle anwendbar. Also habe ich im oben genannten tatsächlichen Bedarf eine neue Tabelle erstellt und Update verwendet, um die Daten zu übertragen und zu aktualisieren.

Kopieren Sie den Code wie folgt:
UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name

Ersetzen (aktualisieren) Sie die Daten in Tabelle 1 entsprechend den Übereinstimmungsbedingungen durch die Daten in Tabelle 2. Tabelle 1 und Tabelle 2 müssen in Beziehung stehen.

Aktualisiere insert_one, insert_sex, setze insert_one.sex = insert_sex.sex, wobei insert_one.id = insert_sex.id;
Abfrage OK, 4 Zeilen betroffen
wähle * aus insert_one;
+----+--------+-----+-----+
| ID | Name | Alter | Geschlecht |
+----+--------+-----+-----+
| 1 | Tian Xiaosi | 25 | 1 |
| 2 | Liu Daniu | 26 | 2 |
| 3 | Zheng Dachui | 28 | 1 |
| 4 | Hu Ergou | 30 | 2 |
| 5 | | | 1 |
| 6 | | | 2 |
| 7 | | | 1 |
| 8 | | | 2 |
+----+--------+-----+-----+
8 Reihen im Set

Die Daten wurden erfolgreich in das Feld „Geschlecht“ der Tabelle „insert_one“ aktualisiert.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen ansehen: „Zusammenfassung der allgemeinen MySQL-Funktionen“, „Zusammenfassung der Kenntnisse zu MySQL-Protokollvorgängen“, „Zusammenfassung der Kenntnisse zu MySQL-Transaktionsvorgängen“, „Zusammenfassung der Kenntnisse zu gespeicherten MySQL-Prozeduren“ und „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“.

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

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Idee, Python-SQL-Anweisungen zum Ausführen von Fuzzy-Abfragen mit mehreren Bedingungen in der MySQL-Datenbank zu verwenden
  • Wesentliche bedingte Abfrageanweisungen für MySQL-Datenbanken
  • MySQL ruft Daten basierend auf dem JSON-Feldinhalt als Abfragebedingung ab (einschließlich JSON-Arrays).
  • MySQL- und PHP-Grundlagen und -Anwendungen: Datenabfrageanweisungen
  • Warum verbessert der Index in der Mysql-Datenbanktabelle nicht die Abfragegeschwindigkeit?
  • MySQL-Daten einfügen und Daten abfragen
  • MySQL-Lernvoraussetzungen zum Abfragen von Daten

<<:  Ein Tutorial zur Installation, Verwendung und automatischen Kompilierung von TypeScript

>>:  Tomcat-Sicherheitsspezifikationen (Tomcat-Sicherheitsverstärkung und -spezifikationen)

Artikel empfehlen

CSS3 implementiert den Beispielcode der NES-Spielekonsole

Ergebnisse erzielenImplementierungscode html <...

Mit CSS3 implementierte Schaltfläche zum Hovern von Bildern

Ergebnis:Implementierungscode html <ul Klasse=...

Kann Docker das nächste „Linux“ werden?

Das Linux-Betriebssystem hat das Rechenzentrum in...

Zusammenfassung der Formulardesigntechniken im Webdesign

„Eingaben sollten in logische Gruppen unterteilt ...

Detaillierte Erklärung der Verwendung des Bash-Befehls

Unter Linux wird Bash als Standard übernommen, wa...

So ändern Sie die SSH-Portnummer in der Centos8-Umgebung

Inhaltsverzeichnis Vorwort Start Vorwort Die Stan...

Linux verwendet if, um zu bestimmen, ob ein Verzeichnis existiert.

So verwenden Sie „if“ in Linux, um festzustellen,...

Implementierung eines einfachen Gobang-Spiels mit nativem JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

So ändern Sie das Terminal in Ubuntu 18 in eine schöne Eingabeaufforderung

Ich habe VMware und Ubuntu neu installiert, aber ...

So installieren Sie Theano und Keras auf einem Ubuntu-System

Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...

Reines JavaScript zur Implementierung des Zahlenratespiels

Entwickeln Sie ein Zahlenratespiel, bei dem zufäl...

Detaillierte Analyse des Reaktionsprinzips und der bidirektionalen Daten von Vue

Verstehen von object.defineProperty, um Reaktions...