在sprintf中使用IF ROW_COUNT()?

时间:2018-01-26 02:00:07

标签: php mysql sql

大家好我试图用sprintf函数中的IF行计数函数编写一个mysql语句,但无济于事。

编辑:此语句基本上用于导入Excel电子表格,然后处理数据。它根据不是主键的字段检查重复项,因此需要进行检查

基于插入此处发布的非PRIMARY密钥的重复更新的方法 - MySQL insert on duplicate update for non-PRIMARY key

    $sql = sprintf("UPDATE tbl_jobs SET a=% WHERE b=%s 
         IF ROW_COUNT()=0
    INSERT INTO tbl_jobs (...) VALUES (...) "),
 $varA, $varB");

我相信当sprintf语句中嵌入了一个函数时会发生问题

在这种情况下,我如何实际逃避功能的括号?或者这个陈述是否错误?

任何帮助将不胜感激。

谢谢你!

1 个答案:

答案 0 :(得分:0)

您的语法不是有效的语法。

大概你想要insert . . . on duplicate key update

INSERT INTO tbl_jobs (a, b, ...)
    VALUES (...) 
    ON DUPLICATE KEY UPDATE a = VALUES(a), b = VALUES(b);

为此,您需要设置正确的唯一索引/主键(用于识别重复项)。

您可以将唯一键定义为:

create unique index unq_jobs_a_b on tbl_jobs(a, b);

然后第一个语句将根据您的需要执行insert / update