如果为空则更新列A,否则更新列B,否则如果两个列都不为空,则对MySQL不执行任何操作

为此,请使用IF()IS 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');

使用select语句显示表中的所有记录-

mysql> select * from DemoTable1976;

这将产生以下输出-

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John      |      Doe |
| John      |     NULL |
| NULL      |   Miller |
| Chris     |    Brown |
+-----------+----------+
4 rows in set (0.00 sec)

这是如果为null则更新一列的查询,否则更新另一列,否则如果两列都不为null则不执行任何操作-

mysql> update DemoTable1976
   set FirstName=if(FirstName IS NULL,'David',FirstName),
   LastName=if(LastName IS NULL,'Brown',LastName);
Rows matched: 4  Changed: 2 Warnings: 0

让我们再次检查表记录-

mysql> select * from DemoTable1976;

这将产生以下输出-

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John      |      Doe |
| John      |    Brown |
| David     |   Miller |
| Chris     |    Brown |
+-----------+----------+
4 rows in set (0.00 sec)