mysql - 将存储为行的名称值对转换为列
问题描述
我有一张如下表:
ID | FieldName | FieldValue
--------------------------------
01 | event_name | Event Title
01 | event_cost | 10.00
01 | event_loc | Leeds
02 | event_name | Another Event
02 | event_cost | 15.00
02 | event_loc | London
我想查询这个并返回结果如下:
Title | Cost | Location
------------------------------------
Event Title | 10.00 | Leeds
Another Event | 15.00 | London
最好的方法是什么?我曾尝试使用 SELECT 查询,但我只能返回一个字段值,而且我似乎无法加入它们。
解决方案
您可以进行条件聚合:
select max(case when FieldName = 'event_name' then FieldValue end) as Title,
max(case when FieldName = 'event_cost ' then FieldValue end) as Cost,
max(case when FieldName = 'event_loc' then FieldValue end) as Location
from table t
group by id;
推荐阅读
- c# - 创建代码优先数据库时如何设置表的字段Id的唯一键号
- javascript - 我想让它只在验证某个命令后运行 javascript
- autodesk-forge - 使用 .NET 创建的自定义 CAD 脚本是否需要退出命令?
- python - 如何使用 Python 注册 Azure 资源提供程序
- javascript - 悬停在图片div上,显示图片div对应的信息div
- jquery - 选中复选框时如何将类添加到表格行?
- python - for 循环创建一个包含 x 个条目的字典,但在循环之后,字典的长度为 < x
- python - 如何将 Python 代码混合到 Python 扩展模块中
- php - 如何处理 WordPress 插件中的 URL?
- android - 如何在安卓平板和Linux系统之间同步日期、时间和时区?