Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Błąd (podzapytanie jednowierszowe zwraca więcej niż jeden wiersz)

Oto Twoje zapytanie:

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

Podzapytanie w select używane w ten sposób nazywa się podzapytanie skalarne . Takie podzapytanie może być użyte tam, gdzie można użyć wartości skalarnej (tj. pojedynczej wartości, takiej jak liczba lub łańcuch).

Podzapytania skalarne muszą spełniać dwa warunki:

  • Zwraca co najwyżej jeden wiersz.
  • Zwraca jedną kolumnę.

Rozwiązanie w Twoim przypadku jest proste, używając LEFT JOIN :

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

Lub w Oracle 12C możesz użyć sprzężenia bocznego:

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

Oba wyglądają tak samo w tym przypadku, ale łączenie boczne może być również użyte dla skorelowanego podzapytania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wyświetlanie nazw kolumn tabeli Oracle

  2. Nie znaleziono danych lub wystąpił błąd wyjątku zbyt wielu wierszy podczas zbiorczego wstawiania rekordów

  3. Domyślny format DATY Oracle

  4. Znajdź aktualne oferty pracy dla formularzy i raportów Oracle

  5. podając poprawną nazwę użytkownika i hasło, pobierz ORA-01017:nieprawidłowa nazwa użytkownika/hasło; Logowanie odrzucone