大家好我试图用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语句中嵌入了一个函数时会发生问题
在这种情况下,我如何实际逃避功能的括号?或者这个陈述是否错误?
任何帮助将不胜感激。
谢谢你!答案 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
。