我有一个运行 MySQL 查询的 PHP 脚本。
$query = "INSERT INTO table (col1, col2)
VALUES('$val1', '$val2')
ON DUPLICATE KEY UPDATE col2= IF(IS NOT NULL '$val1', 'test', 'col2)";
这是我想要做的: Col1 是主键。如果有重复,它会检查 col2 的插入值是否为空。如果不是,它将更新该值,否则该值将保持不变。
此插入失败。当我尝试在 sqlyog 中手动运行它(插入实际值代替变量)时,出现以下错误:错误代码:1064
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获得在“IS NOT NULL .....”附近使用的正确语法
我已经检查了 IS NOT NULL 比较运算符(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_is-not-null)的 MySQL 参考手册,以及INSERT ... ON DUPLICATE KEY UPDATE Syntax ( http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html ) 并相信我使用正确,但显然这不是案子。
我究竟做错了什么?
作为参考,我使用的是 MySQL 5,并且脚本在 RHEL5 服务器上运行。