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

Mysql-String-Abfangen und Abrufen von Daten im angegebenen String

Vorwort: Ich bin auf die Anforderung gestoßen, be...

Detaillierte Erläuterung der JavaScript-Implementierung der Hash-Tabelle

Inhaltsverzeichnis 1. Hash-Tabellenprinzip 2. Das...

Detailliertes Tutorial zum Aufbau eines lokalen Ideenaktivierungsservers

Vorwort Der Blogger verwendet die Idea IDE. Da di...

Verwendung regulärer Ausdrücke in CSS-Selektoren

Ja, CSS hat auch reguläre Ausdrücke (Amen) Zwei l...

Verwenden von js zur Realisierung eines dynamischen Hintergrunds

In diesem Artikelbeispiel wird der spezifische Co...

Rendering-Funktion und JSX-Details

Inhaltsverzeichnis 1. Grundlagen 2. Knoten, Bäume...

Probleme mit Vue, das die Homepage von Bibibili imitiert

Technische Struktur Das Projekt ist in zwei Teile...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22

Dieser Artikel dokumentiert die Installation und ...