1

我很确定这是一个相当简单的答案,但答案完全让我忘记了。

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

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

就像我说的那样,我一生都无法弄清楚以这种方式组装它的查询。任何帮助将不胜感激。

4

1 回答 1

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

于 2012-05-16T20:55:37.937 回答