Как выбрать строки, в которых хотя бы одно значение из списка есть в массиве?
В таблице table есть поле column, которая является массивом чисел. Как мне выбрать все строки в таблице, в которых встречается хотя бы одно из значений списка (1, 2, 3)?
Если бы значение было одно, то я бы сделал это так:
SELECT * FROM table WHERE 1 = ANY(column)
Ответы (2 шт):
Автор решения: Akina
→ Ссылка
Будет что-то типа
SELECT *
FROM table
WHERE (SELECT UNNEST(ARRAY[1,2,3])
INTERSECT
SELECT UNNEST(column)) IS NOT NULL
Автор решения: Мелкий
→ Ссылка
where column && array[1,2,3]
Оператор && для массивов - overlap (have elements in common), возвращает истину если у двух массивов есть хотя бы один общий элемент. Ровно то что вам необходимо.