Ein kurzer Vortrag über MySQL-Pivottabellen

Ein kurzer Vortrag über MySQL-Pivottabellen

Ich habe eine Produktteiletabelle wie diese:

Teil

Teile-ID Teiletyp Produkt-ID
--------------------------------------
1A1
2 B 1
3A2
4 B 2
5A3
6 B 3

Ich möchte eine Abfrage, die eine Tabelle wie diese zurückgibt:

Produkt-ID Teil-A-ID Teil-B-ID
----------------------------------------
1 1 2
2 3 4
3 5 6

In der tatsächlichen Umsetzung wird es Millionen von Produktteilen geben

1 Antworten

Leider besitzt MySQL keine PIVOT-Funktion, aber Sie können sie mithilfe von Aggregatfunktionen und einer CASE-Anweisung modellieren. Für eine dynamische Version müssen Sie eine vorbereitete Anweisung verwenden:

SET @sql = NULL;
WÄHLEN
 GROUP_CONCAT(DISTINCT
  KONKAT(
   'max(Fall wenn Teiltyp = ''',Teiltyp,''' dann Teil-ID Ende) AS Teil_','_id'
  )
 ) IN @sql
AUS
 Teile;
SET @sql = CONCAT('SELECT Produkt-ID,',@sql,' 
         VON Teilen 
          GRUPPE NACH Produkt-ID');
Anweisung VORBEREITEN VON @sql;
Anweisung ausführen;
DEALLOCATE PREPARE-Anweisung;

Wenn Sie nur wenige Spalten haben, können Sie die statische Version verwenden:

Wählen Sie product_id,max (Fall wenn part_type ='A' dann part_id Ende) als Part_A_Id,max (Fall wenn part_type ='B' dann part_id Ende) als Part_B_Id
aus Teilen
Gruppieren nach Produkt-ID

Zusammenfassen

Das Obige ist der gesamte Inhalt der dynamischen MySQL-Perspektive, der von 123WORDPRESS.COM für Sie zusammengestellt und organisiert wurde. Ich hoffe, dieser Artikel kann Ihnen bei der Lösung der in der dynamischen MySQL-Perspektive auftretenden Programmentwicklungsprobleme helfen.

Das könnte Sie auch interessieren:
  • Beispielcode zur Implementierung einer Pivot-Tabelle in MySQL/MariaDB

<<:  Erläuterung des React+TypeScript-Projektaufbaufalls

>>:  So aktualisieren Sie alle Python-Bibliotheken in Ubuntu 18.04 auf einmal

Artikel empfehlen

So erstellen Sie SonarQube mit Docker

Inhaltsverzeichnis 1. Docker installieren 2. Sona...

Frage zur Webseitenerstellung: Bilddateipfad

Dieser Artikel stammt ursprünglich von 123WORDPRE...

MySQL 8.0.18 Installations-Tutorial unter Windows (Abbildung)

Herunterladen Download-Adresse: https://dev.mysql...

Vue-Anfängerhandbuch: Erstellen des ersten Vue-cli-Scaffolding-Programms

1. Vue – Das erste Vue-CLI-Programm Die Entwicklu...

XHTML-Erste-Schritte-Tutorial: XHTML-Tags

Einführung in XHTML-Tags <br />Vielleicht is...

Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux

Vorwort Ich bin kürzlich bei der Arbeit auf diese...

Webdesign: Wenn der Titel nicht vollständig angezeigt werden kann

<br />Ich habe mir heute die neu gestaltete ...

Vue implementiert rekursiv benutzerdefinierte Baumkomponenten

In diesem Artikel wird der spezifische Code der r...

Detaillierte Erklärung des MySQL-Ausführungsplans

Die EXPLAIN-Anweisung liefert Informationen darüb...

Implementierung einer einfachen Web-Uhr mit JavaScript

Verwenden Sie JavaScript, um eine Webseitenuhr zu...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...