Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn con trong câu lệnh select hoạt động như thế nào trong oracle

Thật đơn giản-

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

Nó thậm chí còn đơn giản hơn khi bạn sử dụng một phép nối bảng như thế này:

  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;

Giải thích cho truy vấn con:

Về cơ bản, một truy vấn con trong select nhận một giá trị vô hướng và chuyển nó đến truy vấn chính. Một truy vấn con trong select không được phép vượt qua nhiều hơn một hàng và nhiều hơn một cột, đó là một hạn chế. Ở đây, chúng tôi đang chuyển một count đối với truy vấn chính, như chúng ta biết, sẽ luôn chỉ là một số - một giá trị vô hướng. Nếu không tìm thấy giá trị, truy vấn con trả về null cho truy vấn chính. Hơn nữa, một truy vấn con có thể truy cập các cột từ from mệnh đề của truy vấn chính, như được hiển thị trong truy vấn của tôi, nơi employee.empid được chuyển từ truy vấn bên ngoài sang truy vấn bên trong.

Chỉnh sửa :

Khi bạn sử dụng truy vấn con trong select , về cơ bản Oracle coi nó như một phép nối bên trái (bạn có thể thấy điều này trong sơ đồ giải thích cho truy vấn của mình), với số lượng các hàng chỉ là một ở bên phải cho mọi hàng ở bên trái.

Giải thích cho phép nối bên trái

Một phép nối bên trái rất tiện dụng, đặc biệt khi bạn muốn thay thế select truy vấn con do các hạn chế của nó. Ở đây không có giới hạn nào về số hàng của bảng ở hai bên của LEFT JOIN từ khóa.

Để biết thêm thông tin, hãy đọc Tài liệu Oracle trên các truy vấn con và kết nối trái hoặc kết nối ngoài cùng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhanh nhất để kiểm tra xem một số bản ghi trong một bảng cơ sở dữ liệu?

  2. Oracle Pl / SQL:Vòng qua các nút XMLTYPE

  3. Làm thế nào để CẬP NHẬT một cột bằng cách sử dụng một cột khác trong bảng khác? Lỗi SQL:ORA-00933:Lệnh SQL không kết thúc đúng cách

  4. vấn đề trong việc tìm kiếm danh sách các tệp trong thư mục

  5. Hàm LOWER () trong Oracle