sql >> Databáze >  >> RDS >> Sqlserver

Sql LEFT OUTER JOIN s klauzulí WHERE

Přesuňte omezení do vaší on klauzule.

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

Děje se vám, že nejprve se provede vnější spojení. Všechny řádky pocházející z vnějšího spojení, které nemají shody, budou mít ve všech sloupcích hodnoty null. Potom se použije vaše klauzule where, ale protože 1 <> je nulová, nebude to fungovat, jak byste chtěli.

EDIT:Změněno na klauzuli na základě Piyushova komentáře.



  1. Příklady transakcí PHP + MySQL

  2. Bolestně pomalý Postgres dotaz pomocí WHERE na mnoha sousedních řádcích

  3. Neznámá chyba sloupce v úplné syntaxi spojení

  4. Použijte primární klíč citlivý na zvýraznění v MySQL