本文介紹了使用CASE的鍵|值表旋轉(zhuǎn)&Q;將返回空列…MySQL的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我正在嘗試將鍵|值格式的數(shù)據(jù)轉(zhuǎn)換為每個(gè)條目一行。源數(shù)據(jù)庫(kù)是MySQL,我知道我需要使用CASE語(yǔ)句才能透視,并在此站點(diǎn)上遵循了一些示例來(lái)構(gòu)造我的查詢。
但是,我只能取回一列數(shù)據(jù),其余列中有空格。
源表格式
用戶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`
結(jié)果
用戶ID | Key_1 | Key_2 | Key_3 | Key_4 | 等 |
---|---|---|---|---|---|
1 | 約翰 |
我可以清楚地看到問(wèn)題在于它采用了它找到的第一個(gè)值,并使用該行填充整個(gè)表。我不知道的是如何阻止它這樣做。
因?yàn)榇送敢暤哪康氖菍?shù)據(jù)從一個(gè)安全數(shù)據(jù)庫(kù)轉(zhuǎn)換到另一個(gè)安全數(shù)據(jù)庫(kù)(沒(méi)有可用的集成),所以如果可以避免的話,我真的不想將其作為臨時(shí)步驟放到電子表格中。
誰(shuí)能建議…?
推薦答案
請(qǐng)嘗試
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
這篇關(guān)于使用CASE的鍵|值表旋轉(zhuǎn)&Q;將返回空列…MySQL的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,