Heim >Datenbank >MySQL-Tutorial >Wie transponiere ich die neuesten E-Mail-Adressen mithilfe von SQL in Spalten für Benutzerabfragen?
Neueste E-Mail-Adresse in Spalte für Benutzerabfrage übertragen
Bei der Datenbankverwaltung ist es häufig erforderlich, Daten aus ihrer ursprünglichen Form in ein Format zu konvertieren, das eine effiziente Analyse und einen effizienten Abruf ermöglicht. Eine dieser Transformationen besteht darin, Zeilen mit mehreren E-Mail-Adressen, die einem Benutzer zugeordnet sind, in Spalten umzuwandeln. Dies ermöglicht das Extrahieren der neuesten verfügbaren E-Mail-Adresse für jeden Benutzer basierend auf bestimmten Kriterien (z. B. Erstellungsdatum).
Um diese Konvertierung zu erreichen, können Sie die Funktion tablefunc
im Modul crosstab()
verwenden. Die folgende SQL-Abfrage zeigt, wie crosstab()
verwendet wird, um die letzten drei E-Mail-Adressen jedes Benutzers zu transponieren:
<code class="language-sql">SELECT * FROM crosstab( $$SELECT user_id, user_name, rn, email_address FROM ( SELECT u.user_id, u.user_name, e.email_address , row_number() OVER (PARTITION BY u.user_id ORDER BY e.creation_date DESC NULLS LAST) AS rn FROM usr u LEFT JOIN email_tbl e USING (user_id) ) sub WHERE rn < 4 ORDER BY user_id $$ , 'VALUES (1),(2),(3)' ) AS t (user_id int, user_name text, email1 text, email2 text, email3 text);</code>
In dieser Abfrage berechnet die Unterabfrage die Zeilennummer für jede E-Mail-Adresse, getrennt durch user_id
und sortiert in absteigender Reihenfolge basierend auf creation_date
. Die NULLS LAST
-Klausel stellt sicher, dass Nullwerte als Wert mit dem niedrigsten Rang behandelt werden. Die generierten rn
-Zeilennummern werden dann verwendet, um die Auswahl jedes Benutzers auf die ersten drei E-Mail-Adressen zu beschränken.
crosstab()
benötigt zwei Parameter: die Abfragezeichenfolge (die die Datenquelle definiert) und den Schlüsselwert, der als Spaltentransponierung verwendet werden soll. In diesem Beispiel ruft die Abfragezeichenfolge relevante Daten aus den Tabellen usr
und email_tbl
ab, und der zweite Parameter gibt den Wert (1),(2),(3)
an, der den drei Spalten email1
, email2
und email3
entspricht.
-Abfrage ist eine Tabelle mit user_id
, user_name
und den drei aktuellsten email
-Adressen für jeden Benutzer, transponiert in separate Spalten. Diese Transformation vereinfacht den Abruf der neuesten verfügbaren E-Mail-Adresse jedes Benutzers und ermöglicht so eine effiziente Datenanalyse und Kommunikation.
Das obige ist der detaillierte Inhalt vonWie transponiere ich die neuesten E-Mail-Adressen mithilfe von SQL in Spalten für Benutzerabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!