Не могу обновить с NULL до 0
Привет, я использую эту команду, чтобы присоединиться слева к таблице с другой таблицей, которая имеет немного больше записей, но она продолжает печатать NULL. Я хочу, чтобы NULL стал 0.
SELECT * FROM TABLE1
Left JOIN Table2 ON TABLE1.ID=Table2.IDRel
UPDATE Table2 SET IDRel = 0 where IDRel = NULL
4 ответа
Обновление не должно быть необходимо. Как вы сказали Table2 has a little more records
это ключевая вещь здесь, это означает, что для любой строки из таблицы Table1, для которой нет соответствия IDRel
значение может быть найдено в этом столбце (IDRel
) остановимся NULL
,
Теперь вы можете, например, использовать ISNULL(IDRel, 0)
заменить нулевое значение на 0, но, возможно, INNER JOIN
вместо LEFT JOIN
может дать вам правильный результат, выбрасывая все строки, которые не могут быть сопоставлены...
Однако... Если бы вы действительно обновили этот столбец, он бы работал, только если вы сделали правильное сравнение с NULL
(то есть IS
не =
) это означало бы изменение вашего запроса на обновление:
UPDATE Table2 SET IDRel = 0 where IDRel IS NULL
Требуется ли обновление?
SELECT T1.*, coalesce(t2.IDREL,0) as IDREL
FROM TABLE1 T1
Left JOIN Table2 ON TABLE1.ID=Table2.IDRel
Используйте этот запрос
UPDATE Table2 SET IDRel = 0 where IDRel is NULL
Использование IS NUll
SELECT * FROM TABLE1
Left JOIN Table2 ON TABLE1.ID=Table2.IDRel
UPDATE Table2 SET IDRel = 0 where IDRel IS NULL