สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1976 ( FirstName varchar(20), LastName varchar(20) );
mysql> insert into DemoTable1976 values('John','Doe');
mysql> insert into DemoTable1976 values('John',NULL);
mysql> insert into DemoTable1976 values(NULL,'Miller');
mysql> insert into DemoTable1976 values('Chris','Brown');
ข้อมูลก่อนอัปเดต
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | John | Doe | | John | NULL | | NULL | Miller | | Chris | Brown | +-----------+----------+
Query อัปเดตเงื่อนไข
ใช้ IF() ร่วมกับ IS NULL:
mysql> update DemoTable1976 set FirstName=if(FirstName IS NULL,'David',FirstName), LastName=if(LastName IS NULL,'Brown',LastName); Query OK, 2 rows affected (0.00 sec) Rows matched: 4 Changed: 2 Warnings: 0
ข้อมูลหลังอัปเดต
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | John | Doe | | John | Brown | | David | Miller | | Chris | Brown | +-----------+----------+
อธิบายตรรกะ
- แถวที่ 1: FirstName และ LastName ไม่เป็น NULL → ไม่เปลี่ยนแปลง
- แถวที่ 2: LastName เป็น NULL → อัปเดต LastName = 'Brown'
- แถวที่ 3: FirstName เป็น NULL → อัปเดต FirstName = 'David'
- แถวที่ 4: ทั้งคู่ไม่เป็น NULL → ไม่เปลี่ยนแปลง
รูปแบบอื่นที่ใช้ได้
-- ใช้ CASE WHEN UPDATE DemoTable1976 SET FirstName = CASE WHEN FirstName IS NULL THEN 'David' ELSE FirstName END, LastName = CASE WHEN LastName IS NULL THEN 'Brown' ELSE LastName END;