MySQL布局查询

标签 mysql

我有一个像这样的表:

id        field_label        field_value
123       field1             abc
123       field2             bbb
123       field3             ccc
555       field1             cba
555       field2             uhu
555       field3             ddd

现在,我需要它像这样显示:

id        field1         field2     field3
123       abc            bbb        ccc
555       cba            uhu        ddd

有什么方法可以只使用 MySQL 来做到这一点吗?我试图避免运行过程,并希望仅通过查询来显示数据,以便我可以使用虚拟表。任何帮助将不胜感激!

最佳答案

如果你希望这是动态的,你将不得不进行PIVOT,我相信这在MySQL中不可用(我知道你可以在SQL Server 2005+中做到这一点),但可以通过相当大的努力来完成。如果您喜欢简单/肮脏的解决方案,请尝试以下操作:

SELECT
   id,
   MAX(IF(field_label = 'field1',field_value,NULL) AS 'field1',
   MAX(IF(field_label = 'field2',field_value,NULL) AS 'field2',
   MAX(IF(field_label = 'field3',field_value,NULL) AS 'field3'
GROUP BY 
   id

MAX 将返回最后一个(文本字段按 A-Z 排序)值,但绝不会返回 NULL。您还可以使用 MIN,如果存在重复项,它将返回第一个值(已排序的 A-Z)。

关于MySQL布局查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435900/

相关文章:

MySQL 语法 : "the right syntax to use near" - right in the beginning

mysql - 将 Apache Hadoop 数据输出存储到 Mysql 数据库

php - Mysql解释00 :00:00 as 12:00am?

mysql - 添加复合主键删除索引

所有行上的 MySQL GROUP BY 条件(不是 WHERE 或 HAVING)

mysql - 外键循环引用困境

mysql - 简单的mysql查询问题

mysql - 检查数据库中的凭证号是否正确,然后将订户数据插入另一个数据库

php - Json 导出为 Phoca 在 Joomla 3 上下载

MySQL 数据库在 ubuntu 14.04 中的 XAMPP-1.8.3.4 中停止