首頁 > 資料庫 > mysql教程 > 如何在 SQL 中轉置使用者定義的欄位值?

如何在 SQL 中轉置使用者定義的欄位值?

Susan Sarandon
發布: 2025-01-05 02:10:40
原創
200 人瀏覽過

How Can I Transpose User-Defined Field Values in SQL?

使用者定義欄位值的SQL 轉置技術

在SQL 中,您可能會遇到需要將儲存在行中的資料轉置為形成列。一個這樣的例子是,當您有一個如下所述的表時:

================================================
| Id | UserId | FieldName     | FieldValue     |
=====+========+===============+================|
| 1  | 100    | Username      | John Doe       |
|----+--------+---------------+----------------|
| 2  | 100    | Password      | pass123!       |
|----+--------+---------------+----------------|
| 3  | 102    | Username      | Jane           |
|----+--------+---------------+----------------|
| 4  | 102    | Password      | $ecret         |
|----+--------+---------------+----------------|
| 5  | 102    | Email Address | [email protected] |
------------------------------------------------
登入後複製

要將此數據轉換為一種格式,其中FieldNames 成為列標題,FieldValues 形成相應的行數據,您可以利用以下SQL 查詢:

  SELECT t.userid
         MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
         MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
         MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
    FROM TABLE t
GROUP BY t.userid
登入後複製

但是,為了讓此方法有效運作,您需要為每個預期的FieldName 值定義CASE 語句。為了增強靈活性,請考慮實作 MySQL 的準備語句(動態 SQL)語法來動態產生這些 CASE 語句。

以上是如何在 SQL 中轉置使用者定義的欄位值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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