DBAtlas · Veritabanı operasyon atlası

ORA-01427: single-row subquery returns more than one row

Oracle

Ne 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.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar