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

Ausführliches Installationstutorial für MySQL Installer Community 5.7.16

Dieser Artikel zeichnet das ausführliche Tutorial...

Detaillierte Erläuterung des MySQL Master-Slave-Replikationsprozesses

1. Was ist Master-Slave-Replikation? Die DDL- und...

CSS-Navigationsleistenmenü mit kleinem Dreieck-Implementierungscode

Viele Webseiten haben kleine Dreiecke in ihren Na...

CSS Clear Float Clear:Both Beispielcode

Heute werde ich mit Ihnen über das Löschen von Fl...

4 Möglichkeiten zum Ändern des MySQL-Root-Passworts (Zusammenfassung)

Methode 1: Verwenden Sie den Befehl SET PASSWORD ...

Nginx-Praxis zur Optimierung hoher Parallelität

1. Notwendigkeit des Tunings Ich habe mich immer ...

Implementierung der durch Kommas getrennten MySQL-Split-Funktion

1: Definieren Sie eine gespeicherte Prozedur zum ...

So stellen Sie HBase mit Docker bereit

Standalone-HBase, lassen Sie uns zuerst darüber s...

Detaillierte Schritte zur Yum-Konfiguration des Nginx-Reverse-Proxys

Teil.0 Hintergrund Die Intranetserver des Unterne...

Überwachung sowie Betrieb und Wartung von Linux-Diensten

Inhaltsverzeichnis 1. Installieren Sie das psutil...

Einführung in vierzehn Fälle von SQL-Datenbank

Datenblatt /* Navicat SQLite-Datenübertragung Que...

Das WeChat-Applet implementiert einen einfachen Rechner

Der einfache Rechner des WeChat-Applets dient Ihn...

Designtheorie: Textausdruck und Benutzerfreundlichkeit

<br />Beim Textdesign konzentrieren wir uns ...