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。但是,如果添加新名称,第二个选项并不理想,我必须重新访问此查询。
请告诉我,我错过了一些明显的东西
慕的地10843
相关分类