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

Lấy nghịch đảo của phép nối?

Bạn có thể sử dụng left outer join để lấy tất cả người dùng, sau đó, loại bỏ bất kỳ người dùng nào có nhóm được đính kèm. Truy vấn sau đây sẽ chỉ cung cấp cho bạn danh sách người dùng mà không có nhóm nào cần có:

select
    u.*
from
    users u
    left outer join groupusers g on
        u.userid = g.userid
where
    g.userid is null

Nếu bạn muốn tìm tất cả người dùng không thuộc một nhóm cụ thể:

select
    u.*
from
    users u
    left outer join groupusers g on
        u.userid = g.userid
        and g.groupid = @GroupID
where
    g.userid is null

Điều này sẽ chỉ loại trừ những người dùng trong nhóm cụ thể đó. Mọi người dùng khác sẽ được trả lại. Điều này là do groupid điều kiện đã được thực hiện trong join mệnh đề giới hạn các hàng được kết hợp, không được trả về, đó là điều mà where mệnh đề khô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. 7 cách trả về tất cả các bảng có khóa ngoại trong SQL Server

  2. Lỗi truy vấn với tên cột không rõ ràng trong SQL

  3. Cài đặt cụm chuyển đổi dự phòng SQL Server -3

  4. Làm cách nào để truy vấn nếu một lược đồ cơ sở dữ liệu tồn tại

  5. Sử dụng FILEGROUP_NAME () để trả lại tên của nhóm tệp trong SQL Server