Подзапрос в выражении вернул больше одной строки
Обновлено: 21.11.2024
Бывает так, что подзапрос одиночной строки возвращает более одной строки. В таком случае возникнет ошибка.
Посмотрим, что там с данными не так?
В магазине 201 два менеджера, а в магазине 600 - три.
В такой ситуации есть два варианта развития событий. Мы можем решать неправильную задачу. Если в магазине может быть несколько менеджеров, то мы должны работать с массивом менеджеров. В таком случае может быть приемлемым получить одного из них, например, первого по алфавиту.
Возможно, менеджер в магазине должен быть только один. Просто кто-то не создал уникальный ключ, и пользователи создали несколько менеджеров в магазине. В таком случае, мы написали правильный запрос и необходимо избавляться от неправильных данных и дорабатывать структуру данных.
В любом случае, необходимо гарантировать, что в результате подзапроса будет возвращено не более одной строки. Для этого необходимо одно из:
- должен быть уникальный ключ, гарантирующий, что в результате подзапроса будет не более одной строки;
- использовать агрегатную функцию;
- использовать LIMIT 1 для ограничения количества строк.
Воспользуемся LIMIT 1 :
P.S. Если нам нужен список ФИО, то можно воспользоваться string_agg :
Таких функций в PostgreSQL довольно много, и они заслуживают отдельной темы.
Читайте также:
- Поисковые фразы что это
- В каких смыслах употребляется слово культура в следующих высказываниях поп культура это не культура
- Высказывание детей о папе в детском саду
- Смысл фильма молчание моря одной фразой
- В чем разница между синтетическими и аналитическими средствами выражения грамматических значений