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

Jak działa podzapytanie w instrukcji select w oracle?

To proste-

SELECT empname,
       empid,
       (SELECT COUNT (profileid)
          FROM profile
         WHERE profile.empid = employee.empid)
           AS number_of_profiles
  FROM employee;

Jest to jeszcze prostsze, gdy używasz takiego dołączania do stołu:

  SELECT e.empname, e.empid, COUNT (p.profileid) AS number_of_profiles
    FROM employee e LEFT JOIN profile p ON e.empid = p.empid
GROUP BY e.empname, e.empid;

Wyjaśnienie podzapytania:

Zasadniczo podzapytanie w select pobiera wartość skalarną i przekazuje ją do głównego zapytania. Podzapytanie w select nie może przekazywać więcej niż jednego wiersza i więcej niż jednej kolumny, co jest ograniczeniem. Tutaj przekazujemy count do zapytania głównego, które, jak wiemy, zawsze byłoby tylko liczbą – wartością skalarną. Jeśli wartość nie zostanie znaleziona, podzapytanie zwraca null do głównego zapytania. Co więcej, podzapytanie może uzyskać dostęp do kolumn z from klauzula głównego zapytania, jak pokazano w moim zapytaniu, gdzie employee.empid jest przekazywany z zapytania zewnętrznego do zapytania wewnętrznego.

Edytuj :

Kiedy używasz podzapytania w select Oracle zasadniczo traktuje to jako sprzężenie lewostronne (możesz to zobaczyć w planie wyjaśniania zapytania), przy czym liczność wierszy to tylko jeden po prawej stronie dla każdego wiersza po lewej stronie.

Wyjaśnienie lewego sprzężenia

Lewe sprzężenie jest bardzo przydatne, zwłaszcza gdy chcesz zastąpić select podzapytanie ze względu na jego ograniczenia. Nie ma tu ograniczeń co do liczby wierszy tabel po obu stronach LEFT JOIN słowo kluczowe.

Aby uzyskać więcej informacji, przeczytaj Oracle Docs na temat podzapytań i lewego sprzężenia lub lewego sprzężenia zewnętrznego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hierarchiczne pytanie SQL

  2. Jaka jest różnica między varchar a varchar2 w Oracle?

  3. varchar2(n BYTE|CHAR) default -> CHAR lub BYTE

  4. Znajdowanie i usuwanie znaków spoza zestawu ASCII z Oracle Varchar2

  5. Różnica między użytkownikiem a schematem w Oracle?