Bad*_*mer 14 mysql mysql-error-1064
我有一个运行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 .....'附近使用正确的语法
我已经检查了MySQL参考手册中的IS NOT NULL比较运算符(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_is-not-null),以及INSERT ... ON DUPLICATE KEY UPDATE语法(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)并相信我正确使用两者,但显然不是案件.
我究竟做错了什么?
作为参考,我使用MySQL 5并且脚本在RHEL5服务器上运行.
ype*_*eᵀᴹ 22
语法IS NOT NULL column错误.正确的:column IS NOT NULL.我不确定这'test'是什么.您说要更新列或保持原样.
$query = "INSERT INTO table (col1, col2)
          VALUES('$val1', '$val2')
          ON DUPLICATE KEY UPDATE col2 = IF('$val2' IS NOT NULL, '$val2', col2)";
也可以写成:
$query = "INSERT INTO table (col1, col2)
          VALUES('$val1', '$val2')
          ON DUPLICATE KEY UPDATE 
            col2 = COALESCE( VALUES(col2), col2)";