ORA-01427: Однострочный подзапрос возвращает более одной строки
OracleЧто это значит?
Подзапрос, от которого ожидалась одна строка, вернул больше одной строки. Например, подзапрос в правой части сравнения на равенство (=) выдал несколько значений.
Почему возникает?
Подзапрос возвращает несколько строк там, где ожидается = или присваивание; недостаточно суженное условие WHERE; неуникальное совпадение в корреляции; скалярный подзапрос в списке SELECT возвращает несколько строк.
Как исправить
Сузьте подзапрос, чтобы он возвращал одну строку (дополнительный WHERE, уникальный ключ). Если действительно ожидается несколько значений, используйте IN вместо =: WHERE id IN (SELECT id FROM ...). Либо добавьте в подзапрос агрегат (MAX, MIN) или сократите его до одной строки с помощью ROWNUM = 1. Сначала выполните подзапрос отдельно и проверьте, сколько строк он возвращает.
Ещё по этой СУБД
- ORA-00918Столбец определён неоднозначно
- ORA-06550Строка/столбец PLS-...: ошибка компиляции PL/SQL
- ORA-04068Существующее состояние пакетов было сброшено
- ORA-12899Значение слишком велико для столбца
- ORA-30926Не удаётся получить стабильный набор строк в исходных таблицах
- ORA-08103Объект больше не существует
- ORA-01843Недопустимый месяц