一尘不染

在hstore中按任意属性的值排序

sql

我有这样的记录:

id, hstore_col
1,  {a: 1, b: 2}
2,  {c: 3, d: 4}
3,  {e: 1, f: 5}

如何在hstore中按 任何 属性的最大值/最小值对它们进行排序?

结果应如下所示(按最低顺序排列):

id, hstore_col
1,  {a: 1, b: 2}
3,  {e: 1, f: 5}
2,  {c: 3, d: 4}

我知道,我只能按如下特定属性来排序它们:my_table.hstore_fields -> 'a',但不适用于我的问题。


阅读 145

收藏
2021-03-08

共1个答案

一尘不染

使用转换为数组avals并将结果数组从文本转换为整数。然后对数组进行排序,并按排序后的数组的第一个元素对结果进行排序。

select * from mytable
order by (sort(avals(attributes)::int[]))[1]

http://sqlfiddle.com/#!15/84f31/5

2021-03-08