У меня есть данные следующим образом:Необходимо выбрать элемент массива JSON динамически из таблицы PostGreSQL
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
Однако, мне нужен еще один уровень - оценить последний элемент и, если он совпадает с полем имени, попробовать следующее последнее поле и т. д.
Любые помощь или указатели были бы очень признательны!
Важная информация: ваша версия Postgres? Тип данных 'json' или' jsonb'? –
PostgreSQL версия? –