DBAtlas · Atlas für Datenbankbetrieb

ORA-01427: single-row subquery returns more than one row (einzeilige Unterabfrage liefert mehr als eine Zeile)

Oracle

Was bedeutet das?

Eine Unterabfrage, von der eine einzelne Zeile erwartet wurde, hat mehr als eine Zeile zurückgegeben. Zum Beispiel hat die Unterabfrage auf der rechten Seite eines Gleichheitsvergleichs (=) mehrere Werte geliefert.

Ursache

Eine Unterabfrage, die mehrere Zeilen liefert, wo = oder eine Zuweisung erwartet wird; eine nicht ausreichend eingegrenzte WHERE-Bedingung; ein nicht eindeutiger Treffer in der Korrelation; eine skalare Unterabfrage in der SELECT-Liste, die mehrere Zeilen liefert.

Lösung

Grenze die Unterabfrage so ein, dass sie eine einzelne Zeile liefert (zusätzliches WHERE, eindeutiger Schlüssel). Werden wirklich mehrere Werte erwartet, verwende IN statt =: WHERE id IN (SELECT id FROM ...). Oder ergänze in der Unterabfrage ein Aggregat (MAX, MIN) oder reduziere sie mit ROWNUM = 1 auf eine Zeile. Führe die Unterabfrage zuerst allein aus und prüfe, wie viele Zeilen sie liefert.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank