Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Sql LEFT OUTER JOIN с клауза WHERE

Преместете ограничението във вашата клауза on.

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

Това, което се случва с вас, е, че първо се изпълнява външното свързване. Всички редове, идващи от външното съединение, които нямат съвпадения, ще имат нули във всички колони. След това вашата клауза where се прилага, но тъй като 1 <> null, няма да работи както искате.

РЕДАКТИРАНЕ:Променена клауза въз основа на коментара на 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. TFDQuery.Prepare не може да определи типове параметри за INSERT заявка на MS SQL SERVER

  2. Кой е най-добрият начин за копиране на база данни?

  3. SQL-Server:Неправилен синтаксис близо до ключовата дума „с“. Ако това изявление е израз на обща таблица

  4. MSSQL в python 2.7

  5. Преобразувайте „datetimeoffset“ в „time“ в SQL Server (T-SQL примери)