Преобразовать результат подзапроса в массив
Я хочу, чтобы результаты моего подзапроса (несколько строк) возвращались в моем запросе как отдельная строка. Например.
select u.url, (select c.categoryid from category c where c.categoryid = u.categoryid) from url u
Если URL-адрес содержит несколько категорий, подзапрос вернет несколько строк, как показано ниже
P.S. Подзапрос возвращает несколько строк, не поддерживается в большей части базы данных, но PostgreSQL
url | categoryid --------------------- 1 | 1 1 | 2 2 | 1
Результат, который я хотел, следующий
url | categoryid --------------------- 1 | 1,2 2 | 1
Я не уверен, насколько легко этого можно добиться в других базах данных, таких как oracle или mysql, однако PostgreSQL предоставил тип данных Array, используя массив, очень легко получить то, что я хочу. Мне нужно изменить свой запрос на
select u.url, (select array(select c.categoryid from category c where c.categoryid = u.categoryid))as categoryid from url u
Результат ~
url | categoryid --------------------- 1 | {1,2} 2 | 1
Готово ~ PostgreSQL Array Rock ~