LEFT Join не извлекает запись из основной таблицы, если значение JOINED равно null

Скажем, у меня есть таблица 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, можно ли как-то ее подтянуть? Вернее, почему он не подтягивает запись?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

В SQL Server вам нужно проверить это явно:

where IssueID not in (2) OR IssueID is null

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

+1 Когда вы пытаетесь сравнить неизвестное значение с любым другим значением, результат всегда неизвестен и не включается в результаты.

saritonin 30.05.2019 20:27

Другие вопросы по теме