MySQL 批量更新数据
来源:互联网 发布:英伟达优化软件 编辑:程序博客网 时间:2024/05/16 15:40
需求
最近做的一个项目有这个一个需求,就是记录每个消息的查看数。
规则是只要客户端调用消息列表,就把当前接口返回的数据对应的数据库里面的查看字段+1。做的是后端给前端一次返回20条数据,那么就存在,后端需要一次跟新这20条记录的查看数。这就是设计到MySQL的批量更新操作了。
实现
消息表message:
数据分页
一次获取20条消息,且根据查看数see排序:index
是位置偏移,这个和分页参数有关:
// 计算偏移var index = (page - ) * 20;// sql语句select * from message order by see desc limit index,20;请求接口http://xxxx.cn?page=1接口返回json{ status: 100, msg: "操作成功", data: [ { id: 3, content: "嘿嘿", see: 234 }, { id: 1, content: "今天天气不错", see: 222 }, { id: 2, content: "马上要过年了", see: 123 }, ]}
批量更新
这是正常情况的返回。但是这里没做查看数+1的操作。
那么现在又这个么多是数据需要做查看数+1的操作也就是批量更新这些数据的see数据。
就是下面这一条sql语句了,也就是说把id为1,2,3的阅读量+1;
UPDATE messageSET see = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END WHERE id IN (1,2,3);
这个SQL只是示例,在node.js里面怎么处理呢?
var len1 = data.length;var caseSQL = '';var ids = '';for (var i = 0; i < len1; i++) { var element = data[i]; caseSQL = caseSQL + ' when ' + element.id + ' then ' + (element.see + 1) + ' '; ids = ids + element.id + ',';}// 去掉最后一个","ids = ids.substring(0,(ids.length - 1));// 拼接SQL 语句var upadteSQL = 'UPDATE message set see = CASE id ' + caseSQL + ' END ' + ' WHERE id in (' + ids + ')';
在执行完这个SQL之后,表中的那些数据的see字段就+1了。
步骤
具体下来就是:
1。先获取接口需要返回的数据
2。批量跟新数据库中的see字段
3。json返回给前端
但是这样 就存在一个问题,用户可以刷消息查看量,只要他请求这个接口,就会自动+1。但在实际中发现CSDN的博客访问量也存在这个问题。
阅读全文
0 0
- mysql批量更新数据
- Mysql批量更新数据
- Mysql批量更新数据
- Mysql批量更新数据
- MySQL 批量更新数据
- Mysql批量更新/插入数据
- mysql 批量update更新数据
- java Spring jdbcTemplate 批量更新数据 Mysql
- MySQL批量更新不同表中的数据
- mysql 批量更新临时表中的数据
- 使用 mysql 游标 批量更新数据
- MYSQL存储过程:批量更新数据
- PHP如何批量更新MYSQL中的数据
- mybatis笔记-mysql批量更新数据
- mysql批量更新表中数据
- Mysql根据条件批量更新动态数据
- mysql游标示例 mysql游标简易教程 mysql批量操作数据 mysql批量更新数据 mysql逐条更新数据
- 大批量更新数据mysql批量更新的四种方法
- Android播放音频
- Linux基础之八
- rest/flask/nginx/uwsgi/supervisor
- 常用的距离测度
- Mybatis 报错:java.lang.NoSuchMethodException: java.lang.Long.<init>()
- MySQL 批量更新数据
- QA问答系统中的深度学习技术实现
- 第十二周【项目一-Prim算法的验证】
- Java单链表、双端链表、有序链表实现
- 第12周项目5-拓扑排序算法验证
- Android开发,so文件报错 No implementation found for XXX
- Opencv之鼠标响应setMouseCallback()的用法
- Matlab连接数据库ACCESS数据库
- SQLServer两张表筛选相同数据和不同数据