SQL Server - ISNULL无法处理Update Query

时间:2012-03-27 21:36:58

标签: sql-server isnull

我想要一个0,而不是列中的NULL。

鉴于以下两个表:

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”,所以我将它们颠倒了。结果相同。

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

3 个答案:

答案 0 :(得分:6)

您需要LEFT JOIN而不是INNER JOIN。您的查询甚至没有触及没有匹配ClientID的记录。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您的联接可能会过滤掉行。