【发布时间】:2020-06-22 11:54:42
【问题描述】:
我需要从 MySQL 键值表中查询一些数据,但我想得到一个“正常”表作为结果,指定键作为列。
我的表示例USERS:
ID, user_id, key, value
----------------------------------
1 1 first_name Peter
2 1 last_name Sputnick
3 2 first_name Jan
4 2 last_name Putgraver
5 2 country Netherlands
我想要这个作为查询结果:
ID, first_name, last_name
----------------------------
1 Peter Sputnick
2 Jan Putgraaf
有没有一种好的和有效的方法来实现这一点?请注意,我不想在结果中包含国家/地区列。
我需要这个,因为我需要将此数据与另一个表中的数据连接起来,并且我不想对我需要的每个字段都使用子查询。所以我不想做这样的事情:
SELECT *,
(SELECT value
FROM users
WHERE user_id = o.user_id
AND key = first_name),
(SELECT value
FROM users
WHERE user_id = o.user_id
AND key = last_name),
FROM orders o
【问题讨论】:
-
将值移动到列名是“透视”。显然,这将是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
-
@Strawberry 请接受我真诚的 Happyhammer Clappyhands ™。
-
@Strawberry 还是那个 Hammerhappy Handyclaps ™? (如果我有 Clickicon™,我就不必拼写了。)
标签: mysql join select group-by pivot