Analyse von Beispielen für gemeinsame Abfragevorgänge bei MySQL für mehrere Tabellen

Analyse von Beispielen für gemeinsame Abfragevorgänge bei MySQL für mehrere Tabellen

Dieser Artikel beschreibt die gemeinsame Abfrageoperation für mehrere MySQL-Tabellen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

MySQL Multi-Table Joint Query ist eine Abfragemethode für MySQL-Datenbanken. Im Folgenden wird die Syntax von MySQL Multi-Table Joint Query zu Ihrer Information und zum Lernen vorgestellt.

Gemeinsame Abfragesyntax für MySQL-Mehrtabellen:

Kopieren Sie den Code wie folgt:
SELECT * FROM Einfügetabelle LEFT JOIN Haupttabelle ON t1.lvid=t2.lv_id select * from mytable,title wobei Tabellenname 1.name=Tabellenname 2.writer;

Für MySQL-Versionen ab 4.0 verwenden Sie UNION für die Abfrage. Das Beispiel lautet wie folgt:

SELECT `id`, `name`, `date`, '' AS `type` FROM table_A WHERE bedingte Anweisung...
 UNION
SELECT `id`, `name`, `date`, 'Nicht abgeschlossen' AS `type` FROM table_B WHERE Bedingte Anweisung...
 ORDER BY `id` LIMIT Nummer;

Wenn die MySQL-Version kleiner als 4.0 ist, müssen Sie eine temporäre Tabelle erstellen. Dies ist in drei Schritte unterteilt. Das Beispiel lautet wie folgt:

Schritt 1: Erstellen Sie eine temporäre Tabelle tmp_table_name und fügen Sie relevante Datensätze in table_A ein

Kopieren Sie den Code wie folgt:
$sql = "CREATE TEMPORARY TABLE tmp_table_name SELECT `id`, `name`, `date`, 'completed' AS `type` FROM table_A WHERE bedingte Anweisung...";

Schritt 2: Relevante Datensätze aus Tabelle_B abrufen und in die temporäre Tabelle tmp_table_name einfügen

Kopieren Sie den Code wie folgt:
INSERT INTO tmp_table_name SELECT `id`, `name`, `date2` AS `date`, 'Nicht abgeschlossen' AS `type` FROM table_B WHERE Bedingte Anweisung …

Schritt 3: Datensätze aus der temporären Tabelle tmp_table_name abrufen

Wählen Sie * aus temporärer Tabellenname. Bestellen Sie nach ID DESC.

Analyse der Unterschiede zwischen Union, Order By und Limit

Codebeispiel:

CREATE TABLE `test1` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(20) NICHT NULL,
 `desc` varchar(100) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=InnoDB STANDARD-CHARSET=utf8

1. Die folgende Abfrage meldet einen Fehler: [Err] 1221 - Falsche Verwendung von UNION und ORDER BY

Codebeispiel:

Wählen Sie * aus Test1, wobei der Name wie 'A%' lautet und nach Name sortiert ist.
Union
Wählen Sie * aus Test1, wobei der Name wie „B%“ lautet und nach Name sortiert ist.

Geändert zu:

Codebeispiel:

Wählen Sie * aus Test1, wobei der Name etwa „A%“ lautet.
Union
Wählen Sie * aus Test1, wobei der Name wie „B%“ lautet und nach Name sortiert ist.

Beachten Sie, dass in einer Vereinigung ohne Klammern nur eine Sortierung nach verwendet werden kann (denken Sie darüber nach: Was passiert, wenn die Sortierungsspalten auf beiden Seiten der Vereinigung unterschiedliche Namen haben?), die den Ergebnisset nach der Vereinigung sortiert.

Geändert zu:

Codebeispiel:

(Wählen Sie * aus Test1, wo der Name wie „A%“ ist, sortiert nach dem Namen)
Union
(Wählen Sie * aus Test1, wo der Name beispielsweise „B%“ lautet, sortiert nach dem Namen)

Dies ist auch möglich. Die beiden Order-By-Anweisungen werden vor der Vereinigung ausgeführt.

2. Ebenso

Codebeispiel:

Wählen Sie * aus Test1, wobei der Name wie 'A%' lautet und die Grenze 10 ist
Union
Wählen Sie * aus Test1, wobei der Name wie 'B%' lautet und das Limit 20 ist.

ist gleichbedeutend mit:

Codebeispiel:

(Wählen Sie * aus Test1, wo der Name etwa „A%“ lautet, Grenze 10)
Union
(Wählen Sie * aus Test1, wo der Name beispielsweise „B%“ lautet) Limit 20

Das heißt, die letztere Begrenzung wirkt sich auf den Ergebnissatz nach der Vereinigung aus, nicht auf die Auswahl nach der Vereinigung.
Sie können es auch in Klammern setzen, um das erwartete Ergebnis zu erhalten:

3. Unterschiede zwischen UNION und UNION ALL

Durch „Union“ werden doppelte Zeilen in den ausgewählten Ergebnismengen auf beiden Seiten der Vereinigung herausgefiltert, während durch „Union All“ keine doppelten Zeilen herausgefiltert werden.

Codebeispiel:

(Wählen Sie * aus Test1, wo der Name etwa „A%“ lautet, Grenze 10)
Union
(Wählen Sie * aus Test1, wo der Name beispielsweise „B%“ ist, Limit 20)

Versuchen wir eine komplexe SQL-Anweisung zur Altersgruppenanalyse.

(
 WÄHLEN
  '5~19' als `Alter`,
  SUM(`Eindruck`) AS Eindruck,
  SUM(`klick`) AS klick,
  Summe(`Kosten`) AS Kosten
 AUS
  `Anzeigengruppen-Altersbericht`
 WO
  (
   (
    (`Alter` <= 19)
    UND (`adgroup_id` = '61')
   )
   UND (`Datum` >= '22.11.2015')
  )
 UND (`Datum` <= '20.02.2017')
)
UNION
 (
  WÄHLEN
   '20~29' als `Alter`,
   SUM(`Eindruck`) AS Eindruck,
   SUM(`klick`) AS klick,
   Summe(`Kosten`) AS Kosten
  AUS
   `Anzeigengruppen-Altersbericht`
  WO
   (
    (
     ((`Alter` <= 29) UND(`Alter` >= 20))
     UND (`adgroup_id` = '61')
    )
    UND (`Datum` >= '22.11.2015')
   )
  UND (`Datum` <= '20.02.2017')
 )
UNION
 (
  WÄHLEN
   '30~39' als `Alter`,
   SUM(`Eindruck`) AS Eindruck,
   SUM(`klick`) AS klick,
   Summe(`Kosten`) AS Kosten
  AUS
   `Anzeigengruppen-Altersbericht`
  WO
   (
    (
     ((`Alter` <= 39) UND(`Alter` >= 30))
     UND (`adgroup_id` = '61')
    )
    UND (`Datum` >= '22.11.2015')
   )
  UND (`Datum` <= '20.02.2017')
 )
UNION
 (
  WÄHLEN
   '40~49' als `Alter`,
   SUM(`Eindruck`) AS Eindruck,
   SUM(`klick`) AS klick,
   Summe(`Kosten`) AS Kosten
  AUS
   `Anzeigengruppen-Altersbericht`
  WO
   (
    (
     ((`Alter` <= 49) UND(`Alter` >= 40))
     UND (`adgroup_id` = '61')
    )
    UND (`Datum` >= '22.11.2015')
   )
  UND (`Datum` <= '20.02.2017')
 )
UNION
 (
  WÄHLEN
   '50~59' als `Alter`,
   SUM(`Eindruck`) AS Eindruck,
   SUM(`klick`) AS klick,
   Summe(`Kosten`) AS Kosten
  AUS
   `Anzeigengruppen-Altersbericht`
  WO
   (
    (
     ((`Alter` <= 59) UND(`Alter` >= 50))
     UND (`adgroup_id` = '61')
    )
    UND (`Datum` >= '22.11.2015')
   )
  UND (`Datum` <= '20.02.2017')
 )

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:
  • Aggregatabfrage- und Union-Abfragevorgänge für MySQL-Datenbanken
  • MySQL-Anfänger können sich von den Problemen der Gruppierungs- und Aggregationsabfragen verabschieden
  • Einführung in die Verwendung der gemeinsamen MySQL-Abfragen UNION und UNION ALL
  • Zusammenfassung von vier Situationen gemeinsamer Abfragen zwischen zwei Tabellen in MySQL
  • Detaillierte Analyse und Optimierung der Effizienz gemeinsamer Abfragen in MySQL mit mehreren Tabellen
  • Beliebte Erklärung mehrerer gemeinsamer MySQL-Abfragen
  • Beispiele für MySQL-Aggregatabfragen und Union-Abfragevorgänge

<<:  Lösungen für den schwarzen Bildschirm bei der Installation von Ubuntu (3 Arten)

>>:  js realisiert die Lupenfunktion der Shopping-Website

Artikel empfehlen

So löschen Sie schnell alle Tabellen in MySQL, ohne die Datenbank zu löschen

Dieser Artikel beschreibt anhand eines Beispiels,...

Analyse der MySQL-Methode zum Exportieren nach Excel

Dieser Artikel beschreibt, wie Sie MySQL zum Expo...

Verwenden von Schleifen in awk

Lernen wir verschiedene Arten von Schleifen kenne...

Detaillierte Erläuterung der Nginx Rewrite-Nutzungsszenarien und Codebeispiele

Nginx Rewrite-Nutzungsszenarien 1. Sprung der URL...

Praktische Methode zum Löschen verknüpfter Tabellen in MySQL

In der MySQL-Datenbank können Tabellen, nachdem s...

Detaillierte Erklärung des Vue-Mixins

Inhaltsverzeichnis Lokales Mixin Globale Mixins Z...

Beispielanalyse der Verwendung von Dockerfile-Textdateien

Dockerfile ist eine Textdatei, die zum Erstellen ...

Befehle zum Suchen der Domänen-IP-Adresse im Linux-Terminal (fünf Methoden)

In diesem Tutorial wird erklärt, wie Sie die IP-A...