使用CASE的键|值表旋转&Q;将返回空列...MySQL

quot;Pivotingquot; a key|value table using case returns blank columns... mySQL(使用CASE的键|值表旋转Q;将返回空列...MySQL)
本文介绍了使用CASE的键|值表旋转&Q;将返回空列...MySQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将键|值格式的数据转换为每个条目一行。源数据库是MySQL,我知道我需要使用CASE语句才能透视,并在此站点上遵循了一些示例来构造我的查询。

但是,我只能取回一列数据,其余列中有空格。

源表格式

用户ID 元密钥 Meta_Value
1 名字 约翰
1 Key_2 ETC

查询

 SELECT `user_id`,
 case when `meta_key`='key_1' then `meta_value` else '' end as `key_1`,
 case when `meta_key`='key_2' then `meta_value` else '' end as `key_2`,
 case when `meta_key`='key_3' then `meta_value` else '' end as `key_3`,
 case when `meta_key`='key_4' then `meta_value` else '' end as `key_4`,
 case when `meta_key`='key_5' then `meta_value` else '' end as `key_5`,
 case when `meta_key`='key_6' then `meta_value` else '' end as `key_6`,
 case when `meta_key`='key_7' then `meta_value` else '' end as `key_7`
 from
       (select `user_id`, `meta_key`, `meta_value`
         from `source_table`
        where `user_id`='1'
          and `meta_key` in     
            ('key_1','key_2','key_3','key_4','key_5','key_6','key_7')) x
 group by `user_id`

结果

用户ID Key_1 Key_2 Key_3 Key_4
1 约翰

我可以清楚地看到问题在于它采用了它找到的第一个值,并使用该行填充整个表。我不知道的是如何阻止它这样做。

因为此透视的目的是将数据从一个安全数据库转换到另一个安全数据库(没有可用的集成),所以如果可以避免的话,我真的不想将其作为临时步骤放到电子表格中。

谁能建议...?

推荐答案

请尝试

SELECT `user_id`,
 MAX(case when `meta_key`='key_1' then `meta_value` else '' end) as `key_1`,
 MAX(case when `meta_key`='key_2' then `meta_value` else '' end) as `key_2`,
 MAX(case when `meta_key`='key_3' then `meta_value` else '' end) as `key_3`,
 MAX(case when `meta_key`='key_4' then `meta_value` else '' end) as `key_4`,
 MAX(case when `meta_key`='key_5' then `meta_value` else '' end) as `key_5`,
 MAX(case when `meta_key`='key_6' then `meta_value` else '' end) as `key_6`,
 MAX(case when `meta_key`='key_7' then `meta_value` else '' end) as `key_7`
 from
 (select `user_id`, `meta_key`, `meta_value` from `source_table`
 where `user_id`='1' and `meta_key` in     ('key_1','key_2','key_3','key_4','key_5','key_6','key_7')) x
 group by `user_id

这篇关于使用CASE的键|值表旋转&Q;将返回空列...MySQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)