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

Tutorial zur Installation von Ubuntu Server in Vmware

In diesem Artikel finden Sie das grafische Tutori...

Detaillierte Analyse des langsamen Abfrageproblems beim Senden von MySQL-Daten

Anhand eines Beispiels habe ich Ihnen die Lösung ...

Tutorial zur Installation von jdk1.8 auf Ubuntu14.04

1. Laden Sie die JDK-Download-Adresse herunter我下載...

Bootstrap 3.0 Studiennotizen Rastersystemprinzip

Durch die kurze Einführung in den beiden vorherig...

Eine kurze Erläuterung temporärer MySQL-Tabellen und abgeleiteter Tabellen

Abgeleitete Tabellen Wenn die Hauptabfrage eine a...

Probleme und Vorsichtsmaßnahmen beim Festlegen von maxPostSize für Tomcat

1. Warum maxPostSize festlegen? Der Tomcat-Contai...

mysql teilt eine Datenzeile basierend auf Kommas in mehrere Zeilen auf

Inhaltsverzeichnis Trennwirkung Erläuterung der B...

Tutorial zur Installation und Konfiguration der Version MySQL 5.7.23

Ich habe drei Stunden gebraucht, um MySQL selbst ...

MySQL 8.0.21 Installationstutorial mit Bildern und Text

1. Laden Sie den Download-Link herunter Klicken S...

So implementieren Sie Zeilenumbrüche im Texteingabebereich von Textarea

Wenn Sie den Text im Textarea-Eingabebereich umbre...