Что вы подразумеваете под «массивом пользователей»? Вы имеете в виду хранение типа данных коллекции? Список CSV? Термин «Массив» в действительности не вписывается в сферу Oracle.
Кроме того, по характеру того, что вы спрашиваете, вы хотите, чтобы ключом был адрес электронной почты, а не один из идентификаторов, в противном случае вы получаете каждую комбинацию.
Например, у пользователей a и b есть электронная почта "bob@inter.net". Ваш запрос будет иметь
а, bob@inter.net, б
b, bob@inter.net, a
И я думаю, что вы хотите
bob@inter.net, (а, б)
Теперь, чтобы сделать поле списком идентификаторов CSV, вы можете использовать:
SELECT email,
listagg(id,',') WITHIN GROUP (ORDER BY ID) as list_of_ids
FROM users
GROUP BY email
Если вы хотите сохранить идентификаторы в коллекции оракулов, я могу направить вас и в этом направлении.
РЕДАКТИРОВАТЬ: на основе вашего комментария.
ОК, если вы хотите получить полные результаты, измените значение на
SELECT a.id as id
a.email as email,
listagg(b.id,',') WITHIN GROUP (ORDER BY ID) as list_of_ids
FROM users a, users b
where a.email = b.email
and a.id != b.id
GROUP BY a.id, a.email
Так что, если все пользователи a, b и c поделятся электронной почтой bob@inter.net, вы получите:
a, bob@inter.net, "b, c"
b, bob@inter.net, "a, c"
c, bob@inter.net, "a, b"
Если вы хотите удалить электронное письмо из запроса, тогда:
SELECT a.id as id
listagg(b.id,',') WITHIN GROUP (ORDER BY ID) as list_of_ids
FROM users a, users b
where a.email = b.email
and a.id != b.id
GROUP BY a.id
Кстати, если вы используете более старую версию Oracle, которая не поддерживает функцию агрегирования строк listagg, то вы сможете найти альтернативное решение здесь: http://www.oracle -base.com / Articles / Misc /StringAggregationTechniques.php
Я бы предложил использовать эквивалент wm_concat () для Oracle 11.1 или 10 или один из других для Oracle 9.
Итак, для Oracle 11.1 или 10 используйте:
SELECT a.id as id
a.email as email,
wm_concat(b.id) as list_of_ids
FROM users a, users b
where a.email = b.email
and a.id != b.id
GROUP BY a.id, a.email