2017-05-18 4 views
0

Ich verwende COALESCE Funktion, um ORA-01427 und pick up first non-null value zu vermeiden.OracleDB: COALESCE und ORA-01427: Einreihige Unterabfrage gibt mehr als eine Zeile zurück

COALESCE((
     SELECT c.SCounts 
     FROM counts c 
     WHERE c.ID = 10000 
     ), 0) 

Wenn ich diesen Code kommentieren, funktioniert alles gut.

+2

Was ist der Primärschlüssel (oder der eindeutige Schlüssel) in dieser Tabelle? Ich wette, die Spalte counts.id ist nicht eindeutig, und darin liegt Ihr Problem. Wo wird dieser Code verwendet? Ich nehme an, dass es in der Auswahlliste einer äußeren Abfrage ist? (d. h. wählen Sie koaleszieren (( aus ... ') – Boneist

+0

Danke, ich habe bereits ein Problem gefunden. 'Koaleszieren ((my_subselect), 0)'. subselect gibt mehr als einen Wert zurück –

+0

Es wird ein Wert für eine Zeile zurückgegeben, aber wenn Sie aus einer Tabelle ohne WHERE auswählen, erhalten Sie viele Zeilen. Wie auch immer, könntest du bitte meine Antwort unten akzeptieren, wenn das das wirkliche Problem war? – Galcoholic

Antwort

1

Ich nehme an, die oben COALESCE in eine SELECT so etwas wie diese eingebettet ist:

SELECT 
COALESCE((
     SELECT c.SCounts 
     FROM counts c 
     WHERE c.ID = 10000 
     ), 0) 
FROM counts 

Wenn dies wahr ist, dann könnte das Problem sein, dass diese Auswahl wird so viele Zeilen zurück als Tabelle ZÄHLT hat.

Verwandte Themen