MySQL 批量更新資料

2021-08-10 20:55:34 字數 1424 閱讀 9316

最近做的乙個專案有這個乙個需求,就是記錄每個訊息的檢視數。

規則是只要客戶端呼叫訊息列表,就把當前介面返回的資料對應的資料庫裡面的檢視欄位+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...