#postgresql
Вопрос:
Кажется, что это было бы просто сделать, но я просто не могу этого понять. У меня есть запрос, который возвращает ARRAY
число строк в одном из столбцов. Я хочу, чтобы этот массив содержал только уникальные строки. Вот мой вопрос:
SELECT
f."_id",
ARRAY[public.getdomain(f."linkUrl"), public.getdomain(f."sourceUrl")] AS file_domains,
public.getuniqdomains(s."originUrls", s."testUrls") AS source_domains
FROM
files f
LEFT JOIN
sources s
ON
s."_id" = f."sourceId"
Вот пример строки из моей таблицы возврата
_id | домены_файлов | домены источников |
---|---|---|
2574873 | {cityofmontclair.org,cityofmontclair.org} | {cityofmontclair.org} |
Мне нужно file_domains
содержать только уникальные значения, т. Е. «набор» вместо «списка». Подобный этому:
_id | домены_файлов | домены источников |
---|---|---|
2574873 | {cityofmontclair.org} | {cityofmontclair.org} |
Ответ №1:
Используйте CASE
выражение:
CASE WHEN public.getdomain(f."linkUrl") = public.getdomain(f."sourceUrl")
THEN ARRAY[public.getdomain(f."linkUrl")]
ELSE ARRAY[public.getdomain(f."linkUrl"), public.getdomain(f."sourceUrl")]
END