WHERE 절에 IS NULL 또는 IS NOT NULL 조건을 걸면 NULL 여부에 따라 행을 선별 업데이트할 수 있습니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable (
-> Id INT,
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (0.58 sec)
mysql> INSERT INTO DemoTable VALUES(10,NULL); Query OK, 1 row affected (0.32 sec) mysql> INSERT INTO DemoTable VALUES(NULL,'David'); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DemoTable VALUES(NULL,NULL); Query OK, 1 row affected (0.15 sec)
업데이트 전
mysql> SELECT * FROM DemoTable;
+------+-------+ | Id | Name | +------+-------+ | 10 | NULL | | NULL | David | | NULL | NULL | +------+-------+ 3 rows in set (0.00 sec)
Id 또는 Name이 NULL인 행 모두 Name='Robert'로 업데이트
mysql> UPDATE DemoTable SET Name='Robert' WHERE Id IS NULL OR Name IS NULL; Query OK, 3 rows affected (0.22 sec) Rows matched: 3 Changed: 3 Warnings: 0
업데이트 후
mysql> SELECT * FROM DemoTable;
+------+--------+ | Id | Name | +------+--------+ | 10 | Robert | | NULL | Robert | | NULL | Robert | +------+--------+ 3 rows in set (0.00 sec)
팁: COALESCE(컬럼1, 컬럼2, ...)는 첫 번째 비NULL 값을 반환합니다. UPDATE ... SET Col = COALESCE(Col, '기본값')로 NULL만 치환도 가능합니다.