こんにちは、このコマンドを使用して、テーブルをもう少しレコードがある別のテーブルと左結合しますが、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
はここで重要なことです。つまり、一致するIDRel
値が見つからなかった Table1 の行については、列 ( IDRel
) が残りNULL
ます。
ISNULL(IDRel, 0)
たとえば、 null 値を 0 に置き換えるために使用できますが、INNER JOIN
代わりに を使用しLEFT JOIN
て、一致しなかったすべての行を破棄して正しい結果を得ることができます...
ただし...実際にその列を更新する場合、更新クエリを次のように変更することを意味するNULL
(そうではIS
ない)に対して正しい比較を行った場合にのみ機能します。=
UPDATE Table2 SET IDRel = 0 where IDRel IS NULL
このクエリを使用
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