我想要一个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
?
答案 0 :(得分:6)
您需要LEFT JOIN
而不是INNER JOIN
。您的查询甚至没有触及没有匹配ClientID
的记录。
答案 1 :(得分:2)
您正在使用INNER JOIN,但您在table2上没有客户端ID 2,因此您的结果集不会包含2行。将其替换为LEFT JOIN
答案 2 :(得分:0)
您的联接可能会过滤掉行。