成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL數據庫中正確執行批量更新計數器

數據庫 MySQL
此文章主要是向大家描述的是MySQL數據庫中執行批量更新計數器的設置步驟,以及對其實際操作中要用到的代碼的描述。

以下的文章主要向大家描述的是MySQL數據庫中執行批量更新計數器的實際操作步驟 ,假設我們的MySQL數據庫有一個計數器,此計數器需要我們對其重新統計,那么我們應如何對其進行設置呢?

應用場景,比如說有一個商場,每賣一個產品都產生一個流水,然后我們需要知道每筆流水是該產品第幾次出售的,這樣說可能不明白,我拿一個詳細的數據舉例吧。

 

  1. recordID,productID,productType,sellDate,counter  
  2. 1, 1, 1, '2010-1-15 15:20:10' 0  
  3. 2, 1, 2, '2010-1-15 15:20:10' 1  
  4. 3, 2, 1, '2010-1-15 15:20:10' 0  
  5. 4, 2, 1, '2010-1-15 15:20:10' 1 

上面這個數據是一些撒氣數據,包括記錄的流水號,產品的編號,產品的類型,銷售的時間,計數器。一般來說,計數器我們首先我會想到自增,但這而肯定是不可能使用自增長的。

我最初的時候,嘗使用這樣的代碼:

  1. update t_product set t_counter = (select max(counter)   
  2. from t_product where productid = 1 and productType = 1) + 1   
  3. where where productid = 1 and productType = 1 

但是MySQL報錯,上網一查,MySQL數據庫不支持這種寫法,呵呵,我對MySQL完全不熟悉。記得以前在sql server用過游標,然后也試試查找游標,經過n次google與百度,最終搞定這個難題。

我本身對MySQL完全是個外行,就連注釋也不知道怎么注釋的,現在終于知道有三種寫法的,而--的注釋后面是要空一格的,所以代碼寫得性能什么的就不敢說了,只是實現了這個功能,希望對有同樣需求的朋友有用。

呵,還學到一點,declare只能寫在最前面。

看最終的代碼:

  1. CREATE PROCEDURE p_resetCounter ()  
  2. BEGIN  
  3. DECLARE productID INT;  
  4. DECLARE type INT;  
  5. DECLARE tmpCount INT;  
  6. DECLARE stopFlag int; 

使用游標
 

  1. DECLARE cur cursor for SELECT COUNT(*), productID, productType FROM  
  2. t_product GROUP BY productID, productType;  
  3. DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1

 如果找不到記錄,則設置stopFlag=1

定義變量及創建臨時表
 

  1. CREATE TEMPORARY TABLE tmp_Counter(  
  2. recordID int not null,  
  3. Counter int not null  
  4. )TYPE = HEAP

打開游標
 

  1. open cur;  
  2. REPEAT  
  3. fetch cur into tmpCount, productID, type;  
  4. SET @id = -1;  
  5. INSERT INTO tmp_Counter   
  6. (SELECT recordID, (@id := @id + 1) counter   
  7. from t_product WHERE productIDproductID = productID AND productType = type)  
  8. ORDER BY ts_Date ASC;  
  9. UNTIL stopFlag = 1 
  10. END REPEAT;  
  11. close cur; 

 關閉游標
 

  1. UPDATE t_product, tmp_Counter SET counter = tmp_Counter.Counter   
  2. WHERE recordID = tmp_Counter.recordID;  
  3. -- SELECT * FROM tmp_Counter;  
  4. DROP TABLE tmp_Counter; 

刪除臨時表
 

  1. END; 

以上的相關內容就是對MySQL數據庫中如何批量更新計數器的介紹,望你能有所收獲。

【編輯推薦】

  1. MySQL數據庫到5.1 centos5.3
  2. 把Access的數據導入MySQL數據庫中的2種方法
  3. PHP存取MySQL 數據亂碼的破解
  4. MySQL數據庫文件壞掉的解決
  5. 用MySQL語句來對后門木馬進行生成的操作步驟
責任編輯:佚名 來源: cnblogs
相關推薦

2010-06-12 17:16:46

MySQL數據庫

2010-06-07 14:34:49

連接MySQL 數據庫

2010-07-30 15:44:04

DB2數據庫

2010-05-05 10:19:19

Oracle數據導

2010-06-28 10:36:42

SQL Server數

2010-05-17 17:35:30

MySQL數據庫

2010-05-17 15:34:30

MySql數據庫

2010-07-01 11:14:36

SQL Server

2010-07-15 15:50:58

安裝SQL Serve

2011-05-26 15:53:59

數據庫更新維護

2010-06-17 12:35:49

SQL Server數

2010-07-15 09:47:09

SQL Server數

2010-07-01 16:52:53

SQL Server數

2010-07-12 14:55:34

SQL Server

2023-08-08 08:01:22

微服務架構服務

2010-06-01 12:51:23

MySQL數據庫

2010-06-10 17:05:28

2010-05-14 10:39:32

MySQL數據庫

2009-12-17 13:30:49

Ruby操作Acces

2009-11-06 16:59:26

WCF性能計數器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区免费在线观看 | 九九热精品在线视频 | 欧美在线天堂 | 国产片网站 | 成人视屏在线观看 | 在线看一区二区 | 久久88 | av在线播放网址 | 久久久成人免费视频 | 国产精品一码二码三码在线 | 精品真实国产乱文在线 | 亚洲成av人片在线观看无码 | 国产亚洲精品区 | 亚洲欧美国产精品久久 | av网站在线播放 | 男女在线免费观看 | 在线看片福利 | 欧美 日韩 国产 成人 在线 91 | 中文字幕一区在线 | 中文字幕日韩一区二区 | 一级h片 | 日本精品一区二区 | 视频1区| 国产中文字幕在线 | 伊人狠狠干 | 成人欧美一区二区三区黑人孕妇 | 男女视频在线观看网站 | 在线观看视频中文字幕 | 成人日批视频 | 欧美日韩久久 | 免费的日批视频 | 天堂色网 | 精品香蕉一区二区三区 | 欧美v日韩v | 国产免费视频在线 | 成人永久免费视频 | 伊人春色成人 | 国产一区二区三区四区hd | 亚洲国产精品成人无久久精品 | 一区二区三区在线看 | 国产在线对白 |