Heim > Datenbank > MySQL-Tutorial > Wie transponiere ich Benutzer-E-Mail-Adressen in Spalten, in denen nur die drei neuesten angezeigt werden?

Wie transponiere ich Benutzer-E-Mail-Adressen in Spalten, in denen nur die drei neuesten angezeigt werden?

Patricia Arquette
Freigeben: 2025-01-10 15:41:45
Original
855 Leute haben es durchsucht

How to Transpose User Email Addresses into Columns Showing Only the Three Newest?

Transponieren Sie Benutzer-E-Mail-Adressen in Spalten, um die neuesten Datensätze anzuzeigen

Angenommen, Sie haben eine Tabelle mit mehreren E-Mail-Adressen für jeden Benutzer. Das Ziel besteht darin, diese E-Mails in Spalten umzuwandeln, die die „aktuellsten“ drei Adressen basierend auf ihrem Erstellungsdatum anzeigen. Dadurch wird eine Ausgabetabelle erstellt, die wie folgt aussieht:

user_name user_id email1 email2 email3
Mary 123 [email protected] [email protected] [email protected]
Joe 345 [email protected] (NULL) (NULL)

Um diese Transposition zu erreichen, können wir die Funktion crosstab() im Tablefunc-Modul verwenden:

<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 <= 3
   $$,
   $$SELECT generate_series(1,3)$$
) AS ct (user_id int, user_name text, email1 text, email2 text, email3 text);</code>
Nach dem Login kopieren
Die

externe SELECT-Anweisung extrahiert benutzerspezifische Daten und beschränkt die Ergebnisse basierend auf der row_number()-Funktion auf die drei aktuellsten E-Mail-Adressen. Die Funktion crosstab() transponiert diese E-Mails dann in Spalten und stellt so sicher, dass fehlende Werte als NULL dargestellt werden.

Das obige ist der detaillierte Inhalt vonWie transponiere ich Benutzer-E-Mail-Adressen in Spalten, in denen nur die drei neuesten angezeigt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage