首页 > 解决方案 > 只有当它具有NULL值时才将数据插入到列中,否则更新它

问题描述

仅当从 HTML 页面发送的数据不是 NULL 或“”时,我才想将数据更新到表中的列中。否则,不得触摸该列。例子 :-

表格1

id      name         age        rent        
==========================================
1       Name 1         25         1000         
2       Name 2         28         NULL          
3       Name 3         35         1500          
4       Name 4         44         3200          
5       name 5          42        NULL          

让从 HTML 页面发送的数据存储在一个变量中,并将today_rent这个变量发送到 MYSQL。

MySQL 查询

IF(today_rent !=null OR today_rent != '') THEN
UPDATE table_1 SET rent=today_rent WHERE id=2
END IF;

还有其他方法吗?

标签: mysqlsql

解决方案


添加索引

CREATE UNIQUE INDEX idx ON test (id, (CASE WHEN rent IS NULL THEN 0 ELSE id END));

然后使用

INSERT INTO test (id, rent) 
VALUES (@id,@new_rent) 
ON DUPLICATE KEY UPDATE rent = VALUES(rent);

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=c48a44a6268e2e1710162b337efa592b

PS。查询没有设置nameage列 - 但问题中没有描述它们的设置必要性。


推荐阅读