Oracle
 sql >> база данни >  >> RDS >> Oracle

Грешка (подзаявката с един ред връща повече от един ред)

Това е вашето запитване:

select en.*,
       (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf )
from data1 en;

Подзаявка в select използвано по този начин се нарича скаларна подзаявка . Такава подзаявка може да се използва, когато може да се използва скаларна стойност (т.е. единична стойност като число или низ).

Скаларните подзаявки трябва да отговарят на две условия:

  • Връща най-много един ред.
  • Връща една колона.

Решението във вашия случай е просто, използвайки LEFT JOIN :

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join
     data2 sf
     on 1=1;

Или в Oracle 12C можете да използвате странично свързване:

select en.*, sf.red, sf.blue, sf.green, sf.yellow 
from data1 en left join lateral
     data2 sf
     on 1=1;

Двете изглеждат еднакви в този случай, но странично свързване може да се използва и за корелирана подзаявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle тригери - проблем с мутиращи таблици

  2. Избиране на първите n елемента от група в Oracle

  3. Грешка в базата данни на Oracle в symfony2 (доктрина). Правилно ли е настроен parameters.yml?

  4. Крайната точка на Spring Boot Actuator /health не показва база данни или информация за файловата система

  5. Намиране на последния индекс на низ в Oracle