首页 > 解决方案 > 按列分组并选择其他列作为rails中的列表

问题描述

我有一张像下面这样的桌子

+---+---+
| A | B |
+---+---+
| 1 | 1 |
+---+---+
| 2 | 1 |
+---+---+
| 3 | 2 |
+---+---+
| 4 | 2 |
+---+---+
| 5 | 2 |
+---+---+

有没有一种有效的方法来查询形成如下:

{1 => [1,2], 2 => [3,4,5]}

(按 B 分组并选择 A 作为列表)

标签: sqlruby-on-railspostgresql

解决方案


你可以使用string_agg()功能

select B,string_agg(A,', ') 
from tablename
group by B

或者你可以使用array_agg()

select B,array_agg(A) 
from tablename
group by B

推荐阅读