ORA-01427: single-row subquery returns more than one row
OracleNe demek?
Tek bir satır dönmesi beklenen bir alt sorgu (subquery) birden fazla satır döndürdü. Örneğin bir eşitlik (=) karşılaştırmasının sağındaki alt sorgu birden çok değer üretti.
Neden olur?
= veya bir atama beklendiği yerde birden çok satır dönen alt sorgu; yeterince daraltılmamış WHERE koşulu; ilişkilendirmede (correlation) benzersiz olmayan eşleşme; SELECT listesindeki skaler alt sorgunun birden çok satır getirmesi.
Nasıl çözülür?
Alt sorguyu tek satır dönecek şekilde daraltın (ek WHERE, unique key). Gerçekten birden çok değer bekleniyorsa = yerine IN kullanın: WHERE id IN (SELECT id FROM ...). Ya da alt sorguya toplama ekleyin (MAX, MIN) veya ROWNUM = 1 ile tek satıra indirin. Önce alt sorguyu tek başına çalıştırıp kaç satır döndüğünü kontrol edin.