0

我不想在列中有 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

当我查看 table1 时,我看到了这个:

ClientID        OrderCount
1               2
2               NULL
3               4
4               6

所以,我心想——“显然,我应该使用NULLIF而不是ISNULL”,所以我把它们颠倒了。结果相同。

我在这里做错了什么?如何NULL在列中获得 0 而不是 a?

4

3 回答 3

6

你需要一个LEFT JOIN而不是一个INNER JOIN. ClientID您的查询甚至不会触及不匹配的记录。

于 2012-03-27T21:38:05.727 回答
2

您正在使用 INNER JOIN 但您在 table2 上没有客户端 ID 2,因此您的结果集不会包含 2 行。将其替换为 LEFT JOIN

于 2012-03-27T21:39:32.813 回答
0

您的联接可能正在过滤掉行。

于 2012-03-27T21:39:19.843 回答