发现或"压缩" sqlite中的类似行

时间:2018-06-14 18:13:19

标签: sql sqlite group-by aggregate-functions

我有一张桌子,每一行都有一个" group_id"柱。我想得到一个"压缩"从该组输出的所有行作为单行(或任何类型的更简洁的结构 - 不重要它的外观)。此行仅供应用,不能保存在数据库中。由于表非常大,因此我自己计算会非常昂贵。我愿意预先计算这个值并缓存它。我不打算在那之后动态计算。

在"压缩"表示我不关心哪些值属于哪些键。我只是希望获得给定group_id的所有选项。

例如,我的表的一个子集如下所示:

primary_key, group_id, column_a, column_b, column_c
key1, g1, a, b, c
key2, g1, a, b_1, c
key3, g1, a_1, b, c
key4, g2, a, b, c
key5, g2, a, b, c
key6, g3, x, y, z
key7, g3, x_1, y_1, z_1
key8, g3, x_2, y_2, z_3

一个很好的结果将是

g1, a & a_1, b & b_1, c
g2, a, b, c
g3, x & x_1 & x_2, y & y_1 & y_2, z & z_1 & z_2

它类似于所有列上的GROUP BY,将所有可能的结果汇总到group_id列的单行

1 个答案:

答案 0 :(得分:0)

根据戈登评论,

只需要这样做:

SELECT group_id, group_concat(DISTINCT column_a), group_concat(distinct column_b), group_concat(distinct column_c) 
FROM my_table
GROUP BY group_id