Запрос последнего элемента в массиве из структуры json в postgres

Скажем, что мы имеем следующее

{ "items" :
    [
        {"id": 1},
        {"id": 2},
        {"id": 3}
    ]
}

Как я могу получить последний элемент из массива в данной структуре json? Получение первого кажется не таким сложным

SELECT t.column->'items'->0 AS elem
FROM   tbl t
WHERE  other_column = 20;

Спасибо заранее!

Ответ 1

Что-то вроде этого должно получить последний элемент вашего примера:

SELECT t.col->'items'->(json_array_length(t.col->'items')-1)
FROM   tbl t

SQLFiddle, показывая это в действии...

Ответ 2

В Postgres 9. 5+ теперь можно использовать отрицательные подписки для достижения этой цели.

В приведенном выше случае получение последнего элемента может быть достигнуто с помощью:

SELECT t.column->'items'->-1 AS elem
FROM   tbl t
WHERE  other_column = 20;