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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:使用CASE的键|值表旋转&Q;将返回空列...MySQL


基础教程推荐
猜你喜欢
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01
- 在多列上分布任意行 2021-01-01
- oracle区分大小写的原因? 2021-01-01
- mysql选择动态行值作为列名,另一列作为值 2021-01-01
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01