php - 重复插入多个

标签 php mysql

我正在尝试这样做:

INSERT INTO table (id, hits) VALUES ('abc', 1), ('cde', 1), ('fgh', 1)
ON DUPLICATE KEY UPDATE hits = VALUES (2), (6), (10)

代码是错误的(可能需要将id放入 key 更新中)但是有办法做到这一点吗?

最佳答案

您需要正确使用VALUES,这确实相当简单:

INSERT INTO table (id, hits) VALUES ('abc', 1), ('cde', 1), ('fgh', 1)
ON DUPLICATE KEY UPDATE hits = VALUES (hits)

编辑:如果您迫切需要在重复键的单个查询中为命中分配与插入查询中不同的值,请尝试 CASE operator .

INSERT INTO table (id, hits) VALUES ('abc', 1), ('cde', 1), ('fgh', 1)
ON DUPLICATE KEY UPDATE hits = CASE VALUES(id) 
    WHEN 'abc' THEN 3
    WHEN 'cde' THEN 2
    WHEN 'fgh' THEN 28
    ELSE 11 -- this is a default value assuming you need one
    END;

关于php - 重复插入多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470467/

相关文章:

php - NetBeans 自动完成和 PHP;强制 __get() 类型

mysql - 如何在 CodeIgniter 中查找具有不同 where 条件的特定行和其他列的计数

php - 使用 JQuery 实时更新?

php - 个人资料页面不显示用户个人资料信息或更新

php - 我的服务器上的文件在哪里?

php - 卸载mongodb php驱动并安装不同的版本

javascript - ionic 应用程序 CORS 不存在 'Access-Control-Allow-Origin' header ,使用带有 CORS 中间件的 Lumen API

php - HTTP 包装器不支持可写连接(CodeIgniter 问题?)

mysql - 重写查询以使用连接而不是子查询

mysql - 子查询使用 JOINS 返回多于 1 行的问题