【问题标题】:MySQL layout queryMySQL 布局查询
【发布时间】:2018-06-23 02:26:47
【问题描述】:

我有一张这样的桌子:

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 来做到这一点?我试图避免运行一个过程,并希望只用一个查询来显示数据,以便我可以使用一个虚拟表。任何帮助将不胜感激!

【问题讨论】:

标签: mysql


【解决方案1】:

如果您希望它是动态的,您将不得不 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 将返回 Last (Sorted A-Z for text fields) 值,但绝不会返回 NULL。如果有重复项,您也可以使用 MIN 来返回第一个值(按 A-Z 排序)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多