Сложно предложить хорошее решение, не видя запроса, но, допустим, можно сконструировать промежуточную таблицу через values. Т.е. что-то типа такого:
SELECT ...
FROM table1 JOIN table2 ...
JOIN (
VALUES (123, ARRAY[123, 789]),
(345, ARRAY[345])
) t (id, aliases) ON (table1.userid = ANY(t.aliases))
...
Рабочий (вроде) пример:
SELECT t.id, string_agg(tt.data, ',')
FROM
(
VALUES (123, 'a'),
(123, 'aa'),
(789, 'b'),
(345, 'c'),
(345, 'd')
) tt (userid, data)
JOIN
(
VALUES (123, ARRAY[123, 789]),
(345, ARRAY[345])
) t (id, aliases) ON (tt.userid = ANY(t.aliases))
GROUP by t.id