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

Sự khác biệt giữa "không có trong" và "không tồn tại" là gì?

Sự khác biệt giữa KHÔNG VÀO KHÔNG TỒN TẠI trở nên rõ ràng nơi có NULL các giá trị được bao gồm trong kết quả.

Ví dụ:

create table test_a (col1 varchar2(30 char));
create table test_b (col1 varchar2(30 char));

insert into test_a (col1) values ('a');
insert into test_a (col1) values ('b');
insert into test_a (col1) values ('c');
insert into test_a (col1) values ('d');
insert into test_a (col1) values ('e');

insert into test_b (col1) values ('a');
insert into test_b (col1) values ('b');
insert into test_b (col1) values ('c');
insert into test_b (col1) values (null);

Lưu ý :Điểm khác biệt chính của chúng là test_b chứa null giá trị.

select * from test_a where col1 not in (select col1 from test_b);

Không có hàng nào được trả lại

select * from test_a where 
    not exists
        (select 1 from test_b where test_b.col1 = test_a.col1);

Trả lại

col1
====
d
e


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để kiểm tra đầu ra đến từ truy vấn SELECT trong dấu nhắc lệnh?

  2. Đọc và nhập tệp CSV trong Oracle PL / SQL một cách hiệu quả

  3. Có thể tắt trình kích hoạt Oracle cho phiên hiện tại không?

  4. Tạo một ngày ngẫu nhiên trong Oracle với DBMS_RANDOM

  5. Cách tách chuỗi csv tốt nhất trong oracle 9i