LEFT Join не извлекает запись из основной таблицы, если значение JOINED равно нулю - PullRequest
1 голос
/ 30 мая 2019

Допустим, у меня есть таблица A, которая выглядит следующим образом:

 ID         Name         IssueID
 1          Bob          2
 2          John         Null

У меня есть справочная таблица tblRef, которая включает в себя следующие столбцы:

 IssueID       IssueDesc
 2             Not Completed
 3             Completed

Мой запрос выглядит примерно так,

Select a.Id,a.Name, I.IssueDesc from tableA a Left Join tblRef I on a.issueId = 
I.IssueDesc where IssueID not in (2)

Если я сделаю это, я не увижу запись из таблицы A, в которой IssueID равен NULL, есть ли способ вытащить ее?Или, скорее, почему это не подтягивает запись?

1 Ответ

4 голосов
/ 30 мая 2019

NULL «проваливает» почти все сравнения. На самом деле происходит следующее: NULL, и строки отфильтровываются.

В SQL Server вам необходимо явно проверить это:

where IssueID not in (2) OR IssueID is null

Помните, что семантика NULL обычно имеет значение «неизвестное» значение, а не «пропущенное» значение. Когда у вас есть NULL not in (2), семантика "не в (2)". Результат «неизвестен», потому что значение может быть 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...