DBAtlas · Атлас эксплуатации баз данных

ORA-01427: Однострочный подзапрос возвращает более одной строки

Oracle

Что это значит?

Подзапрос, от которого ожидалась одна строка, вернул больше одной строки. Например, подзапрос в правой части сравнения на равенство (=) выдал несколько значений.

Почему возникает?

Подзапрос возвращает несколько строк там, где ожидается = или присваивание; недостаточно суженное условие WHERE; неуникальное совпадение в корреляции; скалярный подзапрос в списке SELECT возвращает несколько строк.

Как исправить

Сузьте подзапрос, чтобы он возвращал одну строку (дополнительный WHERE, уникальный ключ). Если действительно ожидается несколько значений, используйте IN вместо =: WHERE id IN (SELECT id FROM ...). Либо добавьте в подзапрос агрегат (MAX, MIN) или сократите его до одной строки с помощью ROWNUM = 1. Сначала выполните подзапрос отдельно и проверьте, сколько строк он возвращает.

Открыть в DBAtlas →

Ещё по этой СУБД