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

Sql LEFT OUTER JOIN với mệnh đề WHERE

Di chuyển ràng buộc sang điều khoản on của bạn.

select *
from request r
left join requestStatus rs
on r.requestID = rs.requestID
--and status_id = 1
and status_id <> 2

Điều đang xảy ra với bạn là phép nối bên ngoài được thực hiện trước. Bất kỳ hàng nào đến từ phép nối bên ngoài không có kết quả phù hợp sẽ có giá trị rỗng trong tất cả các cột. Sau đó, mệnh đề where của bạn được áp dụng, nhưng vì 1 <> null, nó sẽ không hoạt động như bạn muốn.

CHỈNH SỬA:Đã thay đổi điều khoản dựa trên nhận xét của Piyush.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi không thành công khi chuyển đổi ngày và / hoặc thời gian từ chuỗi ký tự

  2. Chức năng tối đa của SQL Server

  3. Lỗi tràn số học (số thành số) với MERGE:Lỗi SQL Server?

  4. Tôi muốn hiển thị tất cả các bảng có tên cột được chỉ định

  5. Công việc Trên Sql Server Agent không hoàn thành, nhưng nó thực hiện trong BIDS?