Учитывая этот тип данных xml в базе данных postgresql:
<parent>
<boy age="12">Joe</child>
<boy age="13">John</child>
<boy age="12">Jimmy</child>
<girl age="13">John</child>
<girl age="11">Jimmy</child>
</parent>
Как извлечь уникальные атрибуты всех дочерних элементов?
Это то, что я сделал до сих пор:SELECT unnest(xpath('(//boy|girl)/@age', col_name)) from table
;
Возвращает это:
unnest
12
13
12
13
11
Я бы хотел вернуть только 11,12,13. Итак, мой следующий шаг - попробовать DISTINCT. Я искал в интернете и пробовал несколько вещей, но это, похоже, не работает:
Метод 1 SELECT DISTINCT unnest(xpath('(//boy|girl)/@age', col_name)) from table;
Я получаю эту ошибку: не удалось определить оператор равенства для типа xml
Метод 2 - использование подзапроса - Я думал, что это должен быть ответ. Я запускаю запрос, который возвращает таблицу со всеми атрибутами. Затем я запускаю выборочный отчет для этой таблицы следующим образом:
SELECT DISTINCT * from (SELECT unnest(xpath('(//a|b|c)/@z', data)) from test3) as x;
Я все еще получаю ту же ошибку: не удалось идентифицировать оператор равенства для типа xml
У меня также естьпопробовал это:
SELECT DISTINCT x from (SELECT unnest(xpath('(//a|b|c)/@z', data)) from test3) as x;
Я не могу определить функцию сравнения для типа xml.
Оцените любую помощь!