Выберите любой (массив) в любом (массив)

64
10

У меня есть bigint [] colunm:

person
------
id | name | other_information
------------------------------
1 | Zé | {1,2,3}
2 | João | {1,3}
3 | Maria | {3,5}

Мне нужны отдельные люди с 2 или 5 в другой информации. Как?

спросил(а) 2021-01-25T16:36:02+03:00 4 месяца, 2 недели назад
1
Решение
98

select *
from person
where 2 = ANY(other_information)
or 5 = ANY(other_information)

Однако использование массивов не рекомендуется, так как это приводит к денормализованной схеме.

Из документов PostgreSQL:

Совет. Массивы не являются наборами; поиск определенных элементов массива может быть признаком неправильной настройки базы данных. Рассмотрите возможность использования отдельной таблицы со строкой для каждого элемента, который будет элементом массива. Это будет легче искать и, скорее всего, лучше масштабируется для большого количества элементов.

ответил(а) 2021-01-25T16:36:02+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема