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

WeChat-Applet zum Abrufen eines Schrittdatensatzes für Mobiltelefonnummern

Vorwort Kürzlich bin ich bei der Entwicklung eine...

Analyse des Implementierungsprozesses der drei Modi des VMWare-Netzwerkadapters

Drei Modi Bridged (Bridge-Modus), NAT (Network Ad...

Zwei Arten von Tab-Anwendungen im Webdesign

Heutzutage werden Registerkarten häufig im Webdes...

Detailliertes Tutorial zum Upgrade von Zabbix Monitoring 4.4 auf 5.0

1. Zabbix-Backup [root@iZ2zeapnvuohe8p14289u6Z /]...

Lösung für das Problem ungenauer JS-Zahlen

Die verständlichste Erklärung des Genauigkeitspro...

Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen

Unter Linux können die Befehle cat, more und less...

Geplantes Teilen von Skripten für MySQL-Datenbanksicherungen

BackUpMysql.sh-Skript #!/bin/bash PATH=/bin:/sbin...

Tipps zum Escapen von HTML-Texten

Heute habe ich auf CSDN einen kleinen Trick zum Es...

Analyse des Prinzips der Zentrierung von Elementen mit CSS

Es ist eine sehr häufige Anforderung, die horizon...

Welchen MySQL-Eindeutigen Index oder Normalen Index soll ich wählen?

Stellen Sie sich ein Szenario vor, in dem beim En...

Implementierungsbeispiel eines Videoplayers basierend auf Vue

Wenn der vorhandene Videoplayer die Anforderungen...

Detaillierte Schritte zum Herunterladen und Installieren von Tomcat unter Linux

Wenn Sie gerade erst mit Linux in Berührung gekom...