mysql 动态列_mysql选择动态行值作为列名,另一列作为值

mysql选择动态行值作为列名,另一列作为值

我有一个用户信息的遗留表(仍在使用中),我无法改变结构 -

id    name       value

------------------------------

0     timezone   Europe/London

0     language   en

0     country    45

0     something  x

1     timezone   Europe/Paris

1     language   fr

1     country    46

时区/语言/国家等只是名称的例子,它们可以是变量/除了该列的行之外没有唯一的有限列表

我需要一个可以返回的MySQL兼容的SQL查询 -

id    timezone       language    country  something

---------------------------------------------------

0     Europe/London  en          45       x

1     Europe/Paris   fr          46

我已经查看了关于将数据库中的数据库功能隐藏到MySQL中的stackoverflow的各种答案,类似但是它们似乎都不匹配使用来自同一个表的列中的唯一行值的变量列名别名的情况。虽然我睡得很少,所以他们都开始变得有点模糊,提前道歉。

我能找到的最近的将是使用准备好的语句它将首先从名称列中获取所有可能/唯一值并构建一个使用CASE WHEN和/或多个子SELECT或JOIN上的查询相同的表查询。

我能想到的替代方法是获取该用户id的所有行并在for循环中在应用程序本身中处理它们,或者尝试将名称限制为有限量并使用sub- SELECTs / JOINs。但是,如果添加新名称,第二个选项并不理想,我必须重新访问此查询。

请告诉我,我错过了一些明显的东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值