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 überwachen Sie die Linux-Speichernutzung mit einem Bash-Skript

Vorwort Auf dem Markt sind zahlreiche Open-Source...

Einführung in bedingte Zugriffsattribute und Pfeilfunktionen in JavaScript

Inhaltsverzeichnis 1. Bedingte Zugriffsattribute ...

Vue SPA-Lösung zur Optimierung des ersten Bildschirms

Inhaltsverzeichnis Vorwort Optimierung SSR Import...

Mehrere Möglichkeiten zum Löschen von Arrays in Vue (Zusammenfassung)

Inhaltsverzeichnis 1. Einleitung 2. Mehrere Mögli...

So erstellen Sie DockerHub selbst

Der Docker Hub, den wir zuvor verwendet haben, wi...

Detaillierte Erklärung der MySQL 30-Militärregeln

1. Grundlegende Spezifikationen (1) Es muss die I...

Beim Hochladen von Bildern mit Axios in Vue sind Probleme aufgetreten

Inhaltsverzeichnis Was ist FormData? Eine praktis...

Zabbix überwacht Linux-Hosts basierend auf SNMP

Vorwort: Der Linux-Host ist relativ einfach zu ha...

Beispiel für den Aufbau eines Jenkins-Dienstes mit Docker

Ziehen Sie das Bild root@EricZhou-MateBookProX: D...

js implementiert das Popup-Anmeldefeld durch Klicken auf das Popup-Fenster

In diesem Artikel wird der spezifische Code von j...

VM VirtualBox virtuelle Maschine mounten freigegebenen Ordner

Eine Umgebung Installieren Sie VMware Tools auf C...

img usemap Attribut China Karte Link

HTML-img-Tag: definiert ein Bild, das in eine Webs...