首頁 > 資料庫 > mysql教程 > 如何將使用者電子郵件地址轉換為僅顯示三個最新地址的欄位?

如何將使用者電子郵件地址轉換為僅顯示三個最新地址的欄位?

Patricia Arquette
發布: 2025-01-10 15:41:45
原創
799 人瀏覽過

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

將使用者電子郵件地址轉置到列中以顯示最新記錄

假設有一個表格列出了每個使用者的多個電子郵件地址。目標是將這些電子郵件轉置到列中,根據其建立日期顯示「最新」的三個位址。這將產生如下所示的輸出表:

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

為了實現這種轉置,我們可以使用tablefunc模組中的crosstab()函數:

<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>
登入後複製

外部SELECT語句提取使用者特定數據,根據row_number()函數將結果限制為最新的三個電子郵件地址。然後,crosstab()函數將這些電子郵件轉置到列中,確保缺失值表示為NULL。

以上是如何將使用者電子郵件地址轉換為僅顯示三個最新地址的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板