SQL Server - ISNULL не работает в обновлении запроса - PullRequest
0 голосов
/ 28 марта 2012

Вместо того, чтобы иметь NULL в столбце, я хочу, чтобы 0 присутствовал.

Учитывая следующие две таблицы:

TABLE1
ClientID        OrderCount
1               NULL
2               NULL
3               NULL
4               NULL


Table2
ClientID        OrderCount
1               2
3               4
4               6

ПРИМЕЧАНИЕ. Столбец OrderCount в обеих таблицах имеет тип данных INT.

UPDATE TABLE1
SET OrderCount = ISNULL(TABLE2.OrderCount,0)
FROM TABLE1
INNER JOIN TABLE2 ON TABLE2.ClientID = TABLE1.CLIENTID

Когда я смотрю на таблицу 1, я вижу это:

ClientID        OrderCount
1               2
2               NULL
3               4
4               6

Итак, я подумал про себя: «Очевидно, я должен использовать NULLIF, а не ISNULL", поэтому я поменял их.Тот же результат.

Что я здесь не так делаю?Как получить 0, а не NULL в столбце?

Ответы [ 3 ]

6 голосов
/ 28 марта 2012

Вам нужно LEFT JOIN, а не INNER JOIN.Записи, которые не соответствуют ClientID, даже не затрагиваются вашим запросом.

2 голосов
/ 28 марта 2012

вы используете INNER JOIN, но у вас нет идентификатора клиента 2 в таблице 2, поэтому ваш набор результатов не будет содержать строку с 2. Замените ее на LEFT JOIN

0 голосов
/ 28 марта 2012

Возможно, ваше объединение отфильтровывает строки.

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