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

Tại sao INNER JOIN không bằng (! =) Bị treo mãi mãi

Giả sử INNER JOIN đầu tiên của bạn trả về 75% trong số 1.000.000 hàng trong table1 . Truy vấn thứ hai không trả về 250.000 hàng khác như bạn nghĩ. Thay vào đó, nó cố gắng tạo ra một sản phẩm Descartes và loại bỏ 750.000 hàng phù hợp. Do đó, nó đang cố gắng trả về 6.000.000 × 1.000.000-750.000 hàng. Đó là tập hợp kết quả hàng 6 × 10 phồng lên.

Bạn có thể muốn điều này:

SELECT * FROM table1
LEFT JOIN table2 ON table2.number = table1.number
WHERE table2.number IS NULL

Điều này trả về các hàng trong table1 không có trong table2 .

Bạn cũng có thể quan tâm đến FULL OUTER JOIN :

SELECT * FROM table1
FULL OUTER JOIN table2 ON table2.number = table1.number
WHERE table1.number IS NULL AND table2.number IS NULL

Điều này trả về các hàng trong cả hai bảng không khớp với bảng khác.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn vào nơi không tồn tại-không có khóa chính

  2. CHỌN so với CẬP NHẬT hiệu suất với chỉ mục

  3. Cách so sánh chuỗi cho một khoảng trắng

  4. Tự động thêm các chữ cái vào trước một fieild tăng dần tự động

  5. MySQL INSERT INTO trực tiếp với mệnh đề WHERE