我很确定这是一个相当简单的答案,但答案完全是我的想法。
我有一个数据库表,目前的格式如下:
event_id | elem_id | value
1 1 Value 1
1 2 Value 2
2 1 Value 3
2 2 Value 4
event_id和elem_id都是未确定的数字,并且有无限的可能性。
我如何根据event_id 1查询它,以便将数据格式化为:
event_id | 1 | 2
1 Value 1 Value 2
知道elem_id是一个数字> = n所以可能有50个elem_id但我仍然需要那种格式的数据。
就像我说的那样,我不能为我的生活找出以这种方式组装它的查询。任何帮助都会非常感激。
答案 0 :(得分:1)
请尝试以下操作:
SELECT
`event_id`,
(SELECT t2.`value` FROM table t2 WHERE t2.`event_id` = t1.`event_id` AND t2.`elem_id` = 1),
(SELECT t3.`value` FROM table t3 WHERE t3.`event_id` = t1.`event_id` AND t3.`elem_id` = 2)
FROM `table` t1 GROUP BY `event_id`;
此外,您可以使用不同的方式,并在两个单元格中以逗号分隔格式获取elem_ids和值
SELECT `event_id`, GROUP_CONCAT(`elem_id`), GROUP_CONCAT(`value`) FROM `table` GROUP BY `event_id`;
您可以使用以下语法更改分隔符:GROUP_CONCAT(field SEPARATOR '::')