首页 >数据库 >mysql教程 >如何在 SQL 中转置用户定义的字段值?

如何在 SQL 中转置用户定义的字段值?

Susan Sarandon
Susan Sarandon原创
2025-01-05 02:10:40238浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn