大家好,我正在尝试在 sprintf 函数中使用 IF 行计数函数编写一条 mysql 语句,但没有成功。
编辑:该语句基本上用于导入 Excel 电子表格,然后处理数据。它根据非主键的字段检查重复项,因此需要进行检查
基于此处发布的非主键重复更新插入方法 - 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 语句中嵌套了一个函数时就会出现问题
在这种情况下我该如何转义函数的括号?或者这个说法一开始就是错误的?
如有任何帮助,我们将不胜感激。
谢谢!
最佳答案
您的语法无效。
大概您想要插入。 。 。重复 key 更新
:
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);
然后第一条语句将根据需要执行插入
/更新
。
关于php - 在 sprintf 中使用 IF ROW_COUNT() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48454807/