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

Làm thế nào để chọn tất cả các bản ghi từ một bảng mà không tồn tại trong một bảng khác?

SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL

Q :Điều gì đang xảy ra ở đây?

Đ :Về mặt khái niệm, chúng tôi chọn tất cả các hàng từ table1 và đối với mỗi hàng, chúng tôi cố gắng tìm một hàng trong table2 có cùng giá trị cho name cột. Nếu không có hàng như vậy, chúng tôi chỉ để lại table2 phần kết quả của chúng tôi trống cho hàng đó. Sau đó, chúng tôi hạn chế lựa chọn của mình bằng cách chỉ chọn những hàng trong kết quả mà hàng phù hợp không tồn tại. Cuối cùng, Chúng tôi bỏ qua tất cả các trường khỏi kết quả của chúng tôi ngoại trừ name (cột mà chúng tôi chắc chắn rằng tồn tại, từ table1 ).

Mặc dù nó có thể không phải là phương pháp hiệu quả nhất có thể trong mọi trường hợp, nhưng về cơ bản nó sẽ hoạt động trong mọi công cụ cơ sở dữ liệu cố gắng triển khai ANSI 92 SQL



  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ác thủ tục được lưu trữ với sqlAlchemy

  2. Những lầm tưởng về hiệu suất máy chủ SQL có hại, phổ biến

  3. Cách SHOWPLAN_XML hoạt động trong SQL Server

  4. @@ LỖI và / hoặc THỬ - CATCH

  5. Tập lệnh cho tất cả dữ liệu từ cơ sở dữ liệu SQL Server