SQL - 按字母顺序排序的列
问题描述:
中的字符串我与PostgreSQL的工作,我有一个这样的表:SQL - 按字母顺序排序的列
Group | Name
======================================
1 | Mary
2 | Barry,Ann,Peter
3 | Max,Chris
4 | Richard,Mary,Peter,Oliver
表是一个例子,你可以考虑将有超过10000名不同的名字,名称的一组最大数目为4
我想每个字母组内排序的名称,这样的结果会是这样:
Group | Name
======================================
1 | Mary
2 | Ann,Barry,Peter
3 | Chris,Max
4 | Mary,Peter,Oliver,Richard
感谢
答
SELECT t.Group, string_agg(n.names, ',' ORDER BY n.names) AS Name
FROM my_table t,
regexp_split_to_table(t.Name, ',', 'g') n(names)
GROUP BY 1
ORDER BY 1;
正常化您的数据,因此您不会在单个列中存储多个值,并且可以使用简单的ORDER BY执行此操作。如果您选择将数据存储在以逗号分隔的列表中,则希望每次使用时都必须加倍努力。正确的方法是在三个单独的行中有'2 Barry','2 Ann','2 Peter',这将使查询成为'ORDER BY Group,Name'。 –
“name”,“text”或“text []”是什么类型? – kennytm
@kennytm名称的类型是文本 –