一条mysql update if then 语句

update driver_online 
set vRemainCapacity= case when (vRemainCapacity>0) and ((vRemainCapacity-0.5) >0) then vRemainCapacity-0.5  else 0 end 
where driverId = 'DR120161118100001
### MySQL 批量更新多条数据的语法与示例 在 MySQL 中,可以通过 `UPDATE` 语句结合条件表达式来实现批量更新多条记录。这种方法可以显著提高性能,尤其是在处理大量数据时[^1]。 以下是具体的 SQL 语法: ```sql UPDATE 表名 SET 列名 = CASE 主键列 WHEN 值1 THEN 新值1 WHEN 值2 THEN 新值2 ... END, 其他列名 = CASE 主键列 WHEN 值1 THEN 新其他值1 WHEN 值2 THEN 新其他值2 ... END WHERE 主键列 IN (值1, 值2, ...); ``` #### 示例代码 假设有一个名为 `users` 的表,结构如下: | id | name | age | |----|----------|-----| | 1 | Alice | 25 | | 2 | Bob | 30 | | 3 | Charlie | 35 | 现在需要将 `id=1` 的年龄改为 28,`id=2` 的年龄改为 32,`id=3` 的年龄改为 40。可以使用以下 SQL 语句完成批量更新: ```sql UPDATE users SET age = CASE id WHEN 1 THEN 28 WHEN 2 THEN 32 WHEN 3 THEN 40 END WHERE id IN (1, 2, 3); ``` 通过上述方法,可以在一次查询中更新多条记录的数据,从而减少 IO 次数并提升效率[^3]。 如果是在 Node.js 环境下操作 MySQL 数据库,则可以参考以下代码片段,其中利用占位符 `?` 来防止 SQL 注入攻击[^2]: ```javascript const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'test' }); connection.connect(); let sql = ` UPDATE users SET age = CASE id WHEN ? THEN ? WHEN ? THEN ? WHEN ? THEN ? END WHERE id IN (?, ?, ?) `; let values = [1, 28, 2, 32, 3, 40, 1, 2, 3]; connection.query(sql, values, function(err, result) { if (err) throw err; console.log("Number of records updated: " + result.affectedRows); }); connection.end(); ``` 以上方式不仅提高了安全性,还简化了参数传递的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值