MySQL - 使用一个查询增加多行的值

标签 mysql

是否可以通过一次查询更新和增加多行的值?

我有下表服务:

id | name | count | created_at | updated_at

每次用户在搜索中选择某些服务时,我都想更新计数(这是通过 GUI 完成的,用户可以选择一项或多项服务,我正在获取服务的 ID)。

当选择了多个服务时,我可以对每个服务执行单个查询,但这似乎不是很有效。

例子:

我需要一次更新 7 个服务并增加每个服务的计数值:

UPDATE services SET count = count + 1 WHERE id = 28

UPDATE services SET count = count + 1 WHERE id = 29

UPDATE services SET count = count + 1 WHERE id = 39

UPDATE services SET count = count + 1 WHERE id = 44

UPDATE services SET count = count + 1 WHERE id = 296

UPDATE services SET count = count + 1 WHERE id = 294

UPDATE services SET count = count + 1 WHERE id = 111

是否可以在一次查询中执行此更新?

最佳答案

i need to update 7 services at once and increment the count value for each of them:

UPDATE services SET count = count + 1 WHERE id = 28

UPDATE services SET count = count + 1 WHERE id = 29

UPDATE services SET count = count + 1 WHERE id = 39

UPDATE services SET count = count + 1 WHERE id = 44

UPDATE services SET count = count + 1 WHERE id = 296

UPDATE services SET count = count + 1 WHERE id = 294

UPDATE services SET count = count + 1 WHERE id = 111

Is it possible to perform this update in one query?

可以重写为一个查询。

查询

UPDATE 
 services 
SET 
 count = count + 1 
WHERE
 id IN(28, 29, 39, 44, 296, 294, 111)

关于MySQL - 使用一个查询增加多行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52257470/

相关文章:

Mysql打印前N行结果

php - sql查询的问题

mysql - 如果选择查询返回空结果,在 mysql 中运行另一个选择查询

mysql - 如何更改sequelize内连接输出格式

php - mysql_insert_id();成功插入行后未返回值

PHP,用于处理 MySql 和 mysql_close 问题的简单类

java - 无法从上下文中获取有效的数据源。获取连接 URL '' 异常的 'null'

php - MySQL 正则表达式匹配带或不带子域的域

php - 了解 PDO 准备语句和绑定(bind)参数

mysql - 连接两个 MySQL 表并获取类别结果