【发布时间】:2023-04-03 11:00:01
【问题描述】:
我的数据如下:
ID Name Data
1 Joe ["Mary","Joe"]
2 Mary ["Sarah","Mary","Mary"]
3 Bill ["Bill","Joe"]
4 James ["James","James","James"]
我想编写一个查询,从数组中选择 LAST 元素,该元素不等于 Name 字段。例如,我希望查询返回以下结果:
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
但是,我还需要一个级别 - 评估最后一个项目,如果它与 name 字段相同,则尝试倒数第二个字段,依此类推。
任何帮助或指点将不胜感激!
【问题讨论】:
-
关键:您的 Postgres 版本?数据类型
json或jsonb?
标签: sql arrays json postgresql