最近做的乙個專案有這個乙個需求,就是記錄每個訊息的檢視數。
規則是只要客戶端呼叫訊息列表,就把當前介面返回的資料對應的資料庫裡面的檢視欄位+1。做的是後端給前端一次返回20條資料,那麼就存在,後端需要一次跟新這20條記錄的檢視數。這就是設計到mysql的批量更新操作了。
訊息表message:
idcontent
see1
今天天氣不錯
2222
馬上要過年了
1233
嘿嘿234
一次獲取20條訊息,且根據檢視數see排序:index
是位置偏移,這個和分頁引數有關:
// 計算偏移
var index = (page - ) * 20;
// sql語句
select * from message order
by see desc limit index,20;
請求介面
介面返回json
, ,,]
}
這是正常情況的返回。但是這裡沒做檢視數+1的操作。
那麼現在又這個麼多是資料需要做檢視數+1的操作也就是批量更新這些資料的see資料。
就是下面這一條sql語句了,也就是說把id為1,2,3的閱讀量+1;
update message
set see = case id
when
1then
3when
2then
4when
3then
5end
where id in (1,2,3);
這個sql只是示例,在node.js裡面怎麼處理呢?
var len1 = data.length;
var casesql = '';
var ids = '';
for (var i = 0; i < len1; i++)
// 去掉最後乙個","
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的部落格訪問量也存在這個問題。
mysql批量更新資料
1.使用 on duplicate key update,該語句是如果存在就修改,如果不存在就插入.以下是兩種用法 insert into wx sms id values 10 11 12 on duplicate key update userid userid 100 insert into ...
mysql 批量更新 MySQL批量更新
我有2個表 mysql data details accounts invoices 理想情況下,每個data details都應具有accounts invoices id.data details有乙個帶有accounts invoices主鍵的外來鍵 由於某種原因,有data details記...
mybatis 批量更新資料 mysql
簡單粗暴,寫乙個更新的方法,迴圈呼叫就是了,但是效率就比較低了。效能較差。批處理,類似於 update stu set name jia score 213 where id 1 update stu set name jia2 score 456 where id 2 update stu set...