在MySQL中转动一个表

时间:2017-12-01 10:18:36

标签: php mysql group-by explode concat

我目前遇到一个问题,我需要将许多行转换为由特定键定义的单行。我知道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我需要的表格中的值就好了。

非常感谢任何指示,最好的问候。

1 个答案:

答案 0 :(得分:0)

使用数据透视表

选择max(大小写(当key_value = my_key_1然后val_1结束时)), max(case(当key_value = my_key_2然后val_2结束时)), 从... 等...