SQL从多行创建一个数组

时间:2012-10-01 20:23:02

标签: mysql join hive self-join

我有一张表格,其中包含从IDsome_value的一对多映射。对于特定的some_value,哪些查询可以为ID提供所有内容?

我可以使用SQL中有用的任何数组,字符串或其他对象作为list_of_values中的最终结果。您不需要使用我的逗号分隔格式。

我特有的SQL变量是Hive,但语法和函数与MySQL非常相似:)

起始表:

ID             some_value
-----------    ------------
1              a
1              b
1              c
2              x
2              y
2              z
2              a
3              g
3              h

完成表:

ID              list_of_values
----------      ----------------
1               a, b, c
2               x, y, z, a
3               g, h

2 个答案:

答案 0 :(得分:3)

SELECT ID, COLLECT_SET(some_value) AS list_of_values
    FROM YourTable 
    GROUP BY ID;

答案 1 :(得分:0)

SELECT
    `id`,
    GROUP_CONCAT(DISTINCT `some_value` SEPARATOR ', ') AS 'list_of_values'
FROM `your_table`
GROUP BY `id`