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

hành vi của tham gia bên trong tồn tại bên trong sql

Sự khác biệt là khi bạn sử dụng exists - truy vấn bên trong thường phụ thuộc vào truy vấn chính (nghĩa là sử dụng các cột từ nó và do đó không thể được thực thi riêng biệt) và, vì vậy, đối với mỗi hàng của truy vấn chính, nó sẽ kiểm tra xem một số dữ liệu được truy xuất bởi truy vấn phụ có tồn tại hay không.

Vấn đề của truy vấn đầu tiên của bạn là truy vấn con bên trong khối tồn tại dù sao cũng không phụ thuộc vào các cột truy vấn chính, đó là một truy vấn riêng biệt luôn trả về một hàng có 1 , vì vậy, đối với bất kỳ hàng nào của truy vấn chính, kết quả của exists sẽ luôn là true . Vì vậy, truy vấn đầu tiên của bạn chỉ tương đương với

SELECT distinct(company_id)
FROM user
WHERE user.user_id = 123 
AND user.company_id IS NOT NULL

Xem thêm fiddle



  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 #:Tương đương kiểu dữ liệu Oracle với OracleDbType

  2. Hiệu suất của SUBSTR trên CLOB

  3. Làm cách nào để tắt hết hạn mật khẩu Oracle?

  4. Khám phá các kiểu cấp gói PL / SQL bằng cách sử dụng dạng xem từ điển Oracle

  5. ORA-01017 Mẹo giải quyết lỗi Oracle