php - 在 sprintf 中使用 IF ROW_COUNT() ?

标签 php mysql sql

大家好,我正在尝试在 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/

相关文章:

php - 在 Magento 中按数据属性选择产品

php - 编写连接 4 个表的 mysql 查询时遇到问题

php - 无法使用 php 脚本下载 csv

PHP/MySQL : How to verify properly escaped data?

java - 批量更新异常 : Unknown column in where clause

sql - UTL_MAIL 消息属性调用 OWA_UTIL.cellsprint 过程 Oracle

php - 合并两个平面关联数组并对匹配键的值求和

Mysql:如何计算两个平均值之间的差异?

sql - 如何返回当天写的最新行?

sql - 使用暂存表和事件表被认为是一种反模式