我目前遇到一个问题,我需要将许多行转换为由特定键定义的单行。我知道GROUP_CONCAT功能,目前正在使用它,但我想避免在获取结果后在PHP中使用explode。我的表看起来像这样:
----------------------------------
| primary_id | key_value | value |
----------------------------------
| 1 | my_key_1 | val_1 |
| 1 | my_key_2 | val_2 |
| 1 | my_key_3 | val_3 |
| 2 | my_key_4 | val_4 |
| 2 | my_key_5 | val_5 |
----------------------------------
我想构建一个MySQL-Query,它对于主要id 1和主要id 2来说就像这样:
-----------------------------------------------
| primary_id | my_key_1 | my_key_2 | my_key_3 |
-----------------------------------------------
| 1 | val_1 | val_2 | val_3 |
-----------------------------------------------
------------------------------------
| primary_id | my_key_4 | my_key_5 |
------------------------------------
| 2 | val_4 | val_5 |
------------------------------------
所以我可以在PHP中将输出检索为数组,格式为:
$output[1][my_key_1] = val_1
$output[1][my_key_2] = val_2
...
GROUP_CONCAT功能可以正常工作,但只需使用SQL我需要的表格中的值就好了。
非常感谢任何指示,最好的问候。
答案 0 :(得分:0)
使用数据透视表
选择max(大小写(当key_value = my_key_1然后val_1结束时)), max(case(当key_value = my_key_2然后val_2结束时)), 从... 等...