Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sql LEFT OUTER JOIN z klauzulą ​​WHERE

Przenieś ograniczenie do swojej klauzuli on.

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

To, co się z tobą dzieje, to to, że najpierw wykonywane jest sprzężenie zewnętrzne. Wszystkie wiersze pochodzące z zewnętrznego sprzężenia, które nie mają dopasowań, będą miały wartości null we wszystkich kolumnach. Następnie zostanie zastosowana klauzula where, ale ponieważ 1 <> null, nie będzie działać tak, jak chcesz.

EDYCJA:Zmieniono klauzulę na podstawie komentarza 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. NHibernate 3 określ typ danych sql z gadatliwą składnią

  2. Otrzymujesz początkową i końcową datę tygodnia? Na serwerze SQL?

  3. Jakie jest znaczenie składni funkcji RAISERROR()

  4. SQL Server Profiler — jak filtrować śledzenie, aby wyświetlać tylko zdarzenia z jednej bazy danych?

  5. Problem z uprawnieniami w programie SSMS:Odmówiono uprawnienia SELECT do obiektu „extended_properties”, bazy danych „mssqlsystem_resource”, ... Błąd 229)