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

Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels

In tatsächlichen Projekten gibt es Beziehungen zw...

Lösen Sie das Problem, dass die mit nginx erhaltene IP-Adresse 127.0.0.1 ist

Holen Sie sich das IP-Tool importiere lombok.exte...

Detaillierte Erklärung zur Verwendung von React.cloneElement

Inhaltsverzeichnis Die Rolle von cloneElement Anw...

Grundlegendes Lernen und Erfahrungsaustausch zu MySQL-Transaktionen

Eine Transaktion ist eine logische Gruppe von Ope...

So installieren Sie den Xrdp-Server (Remote Desktop) unter Ubuntu 20.04

Xrdp ist eine Open-Source-Implementierung des Rem...

Diskussion über Web-Nachahmung und Plagiat

Einige Monate nachdem ich 2005 in die Branche eing...

So berechnen Sie mit Linux den von zeitgesteuerten Dateien belegten Speicherplatz

Öffnen Sie den Editor für geplante Aufgaben. Cent...

Was ist eine HTML-Datei? So öffnen Sie eine HTML-Datei

HTML steht für Hypertext Markup Language. Heutzut...