简单的MySQL查询 - 改变表格式

时间:2012-05-16 20:48:44

标签: mysql sql

我很确定这是一个相当简单的答案,但答案完全是我的想法。

我有一个数据库表,目前的格式如下:

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但我仍然需要那种格式的数据。

就像我说的那样,我不能为我的生活找出以这种方式组装它的查询。任何帮助都会非常感激。

1 个答案:

答案 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 '::')