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

Linux-Methodenbeispiel zum Anzeigen aller Informationen des Prozesses

Auf dem Server läuft ein Taskprozess. Wenn wir ih...

Node.js erstellt ein einfaches Crawler-Case-Tutorial

Vorbereitung Zuerst müssen Sie nodejs herunterlad...

Website User Experience Design (UE)

Ich habe gerade einen von JunChen verfassten Beitr...

Analyse des neuen Ressourcenmanagementsystems von CocosCreator

Inhaltsverzeichnis 1. Ressourcen und Konstruktion...

Beispiel für utf8mb4-Sortierung in MySQL

Allgemeine utf8mb4-Sortierregeln in MySQL sind: u...

Sieben Prinzipien eines guten Designers (1): Schriftdesign

Nun, vielleicht sind Sie ein Design-Guru, oder vie...

Detailliertes Beispiel für die Verkettung mehrerer Felder in MySQL

Das Zusammenführen von Zeilen- und Feldergebnisse...

Erste Schritte mit MySQL Sharding

Vorwort Relationale Datenbanken werden eher zu Sy...