嗨,我正在使用此命令将一个表与另一个具有更多记录的表连接起来,但它一直打印 NULL。我希望那个 NULL 变成 0。
SELECT * FROM TABLE1
Left JOIN Table2 ON TABLE1.ID=Table2.IDRel
UPDATE Table2 SET IDRel = 0 where IDRel = NULL
嗨,我正在使用此命令将一个表与另一个具有更多记录的表连接起来,但它一直打印 NULL。我希望那个 NULL 变成 0。
SELECT * FROM TABLE1
Left JOIN Table2 ON TABLE1.ID=Table2.IDRel
UPDATE Table2 SET IDRel = 0 where IDRel = NULL
不需要更新。正如您所说,Table2has a little more records
是这里的关键,这意味着对于 Table1 中找不到匹配IDRel
值的任何行,列 ( IDRel
) 将保留NULL
。
现在,您可以例如使用ISNULL(IDRel, 0)
0 替换空值,但也许用 0INNER 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