我有数据如下:需要从PostgreSQL表动态地选择一个JSON数组元素
ID Name Data
1 Joe ["Mary","Joe"]
2 Mary ["Sarah","Mary","Mary"]
3 Bill ["Bill","Joe"]
4 James ["James","James","James"]
我想要编写从阵列,这不等于名称字段选择的最后一个元素的查询。例如,我想查询返回的结果如下:
ID Name Last
1 Joe Mary
2 Mary Sarah
3 Bill Joe
4 James (NULL)
我越来越近 - 我可以选择使用以下查询的最后一个元素:
SELECT ID, Name,
(Data::json->(json_array_length(Data::json)-1))::text AS Last
FROM table;
ID Name Last
1 Joe Joe
2 Mary Mary
3 Bill Joe
4 James James
不过,我需要一个更公平 - 评估最后一个项目,如果它与名称字段相同,则尝试倒数第二个字段,等等。
任何帮助或指针将不胜感激!
Crucial:你的Postgres版本?数据类型为“json”还是“jsonb”? –
PostgreSQL版本? –