Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: อัปเดตคอลัมน์ A ถ้าเป็น NULL ไม่งั้นคอลัมน์ B ถ้าทั้งคู่ไม่เป็น NULL ไม่ต้องทำอะไร

สร้างตารางและข้อมูลตัวอย่าง

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;