仅当字段包含null或0时才更新MYSQL字段

时间:2009-12-03 05:50:25

标签: php mysql

我想将数据插入到表中,然后如果表已经具有相同的rName输入值,那么它将更新此行(因为rName是唯一索引),这一切都很好。

但是在UPDATE上我希望它只更新字段,因为字段中没有字段(NULL)。

INSERT INTO $table  
(`rDate`, `rName`, `rFormat`, `rText`) VALUES 
(CURRENT_TIMESTAMP, 'name3', 'formate22') ON DUPLICATE KEY UPDATE 
 rFormat=VALUES(rFormat), 
 IF('rFiles'=NULL,rFiles=VALUES(rFiles), rFiles=VALUES(rSizeMB)), 
 rText=VALUES(rText)

这也是最好的做我正在做的事情?这看起来有点像否定,因为我在此处显示的字段数量是我的两倍,我只是将其删除了。

1 个答案:

答案 0 :(得分:4)

试试这个:

...
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);

我没有使用过更高级的MySQL东西(比如IF),所以我对此并不乐观,但它应该是正确的。关键部分是将rFiles设置为IF返回的值。