我想将数据插入到表中,然后如果表已经具有相同的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)
这也是最好的做我正在做的事情?这看起来有点像否定,因为我在此处显示的字段数量是我的两倍,我只是将其删除了。
答案 0 :(得分:4)
试试这个:
...
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);
我没有使用过更高级的MySQL东西(比如IF),所以我对此并不乐观,但它应该是正确的。关键部分是将rFiles设置为IF返回的值。