我有下表:
create table subscriptions (id int, data jsonb);
填写以下数据:
insert into subscriptions (id, data)
values
(1, '{"versions": {"10.2.3": 3, "9.2.3": 4, "12.2.3": 5, "1.2.3": 5}}'),
(2, '{"versions": {"0.2.3": 3, "2.2.3": 4, "3.2.3": 5}}');
我正在尝试编写一个查询,它将导致:
-----------------
| id | minVersion |
-----------------
| 1 | 1.2.3 |
| 2 | 0.2.3 |
-----------------
我尝试过的方法:
select
(string_to_array(jsonb_object_keys((data->'versions')::jsonb), '.'))[1] as total_prices
from subscriptions;
(does不起作用,但我认为这些方法在这里会很有用)
1条答案
按热度按时间0s0u357o1#
我会创建一个函数来提取版本密钥,并对它们进行排序以选择最小的密钥。
只有在版本号中没有
1.2.3-beta
或其他非数字字符时,上述操作才有效。然后按如下方式使用它:
Online example