INSERT INTO 'rozliczenia' ('userid', 'data', 'stawka') VALUES ('1', '2015-11-01', NULL) ON DUPLICATE KEY UPDATE stawka = COALESCE(VALUES('stawka'), 'stawka');
应检查value是否为NULL。如果是,那么不要更新premia列(我在表中没有任何空值),但它会将其更新为0.为什么?昨天一切正常。
更新前:
Premia 200
在
Premia 0,尽管它应该是200
表中的索引:
主要 - 身份
唯一 - 数据
唯一 - 用户标识
这不是关于引用的,当它们改变它们的行为方式时
答案 0 :(得分:0)
您对表名和列名有单引号,因此您的查询不起作用。
INSERT INTO rozliczenia(userid, data, stawka)
VALUES ('1', '2015-11-01', NULL)
ON DUPLICATE KEY UPDATE stawka = COALESCE(VALUES(stawka), stawka);
coalesce()
返回0
的原因是因为您传入一个字符串然后在数字上下文中使用它。在这样的上下文中,不以数字开头的字符串最终为0
。
重复直到你彻底理解:“我只会使用单引号作为字符串和日期常量。”