我有一个postgresql数据库,其数据有四列。我使用sqllite3在python中运行这些命令。假设列名为A,B,c,d。 数据库中的每个事件都由A和B的组合值唯一表示。例如,请考虑下表。
--------------------------------------------------
| A| B| c| d|
--------------------------------------------------
| 10| 3| c1| d1|
--------------------------------------------------
| 11| 4| c2| d2|
--------------------------------------------------
| 10| 3| c3| d3|
--------------------------------------------------
| 12| 3| c4| d4|
--------------------------------------------------
| 13| 1| c5| d5|
--------------------------------------------------
| 10| 3| c6| d6|
--------------------------------------------------
| 11| 4| c7| d7|
--------------------------------------------------
| 10| 1| c8| d8|
--------------------------------------------------
| 10| 2| c9| d9|
--------------------------------------------------
| 11| 3| c10| d10|
--------------------------------------------------
如您所见,组合10和3在表中出现三次,这意味着所有这些行都是同一事件的一部分(其中每个事件由A和B中的组合值唯一表示)。我想要的是所有细节的列表:
例如,在这种情况下,(c1, c3, c6), (d1, d2, d6), (c8), (d8), (c9), (d9)
- 这些对应于A列中的10。前两个'组'来自10(来自A)和相应的3(来自B)。第二个来自10(A)和1(B),后两个来自10(A)和2(B)。同样,其他一切也必须以这种方式分组。
我是SQL的完全菜鸟,所以我真的迷路了。经过大量的谷歌搜索后,我得到了这个部分
SELECT GROUP_CONCAT(c, ',') c,\
GROUP_CONCAT(d, ',') d,\
FROM table WHERE GROUP BY A, B
这给了我详细信息,但它将A和B组合在一起,因此我得到的输出在另一行中有10/3和10/2。我想要将所有10个(以及A中的所有其他值)组合在一起,然后然后按照它在B中的值进行分组。
如何做到这一点?谢谢!
编辑:表格格式所需的答案 -
--------------------------------------------------
| (c1, c3, c6), (d1, d3, d6), (c8), (d8), (c9), (d9)
--------------------------------------------------
| (c2, c7), (d2, d7), (c10), (d10)
--------------------------------------------------
| (c4), (d4)
--------------------------------------------------
| (c5), (d5)
--------------------------------------------------