Не могу обновить с 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
Другие вопросы по тегам