自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)庫中正確執(zhí)行批量更新計數(shù)器

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

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

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

 

  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 

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

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

  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報錯,上網(wǎng)一查,MySQL數(shù)據(jù)庫不支持這種寫法,呵呵,我對MySQL完全不熟悉。記得以前在sql server用過游標(biāo),然后也試試查找游標(biāo),經(jīng)過n次google與百度,最終搞定這個難題。

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

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

看最終的代碼:

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

使用游標(biāo)
 

  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

 如果找不到記錄,則設(shè)置stopFlag=1

定義變量及創(chuàng)建臨時表
 

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

打開游標(biāo)
 

  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; 

 關(guān)閉游標(biāo)
 

  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; 

以上的相關(guān)內(nèi)容就是對MySQL數(shù)據(jù)庫中如何批量更新計數(shù)器的介紹,望你能有所收獲。

【編輯推薦】

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

2010-06-12 17:16:46

MySQL數(shù)據(jù)庫

2010-06-07 14:34:49

連接MySQL 數(shù)據(jù)庫

2010-07-30 15:44:04

DB2數(shù)據(jù)庫

2010-05-05 10:19:19

Oracle數(shù)據(jù)導(dǎo)

2010-06-28 10:36:42

SQL Server數(shù)

2010-05-17 15:34:30

MySql數(shù)據(jù)庫

2010-05-17 17:35:30

MySQL數(shù)據(jù)庫

2010-07-15 15:50:58

安裝SQL Serve

2010-07-01 11:14:36

SQL Server

2011-05-26 15:53:59

數(shù)據(jù)庫更新維護

2010-07-01 16:52:53

SQL Server數(shù)

2010-06-17 12:35:49

SQL Server數(shù)

2010-07-15 09:47:09

SQL Server數(shù)

2010-07-12 14:55:34

SQL Server

2010-06-01 12:51:23

MySQL數(shù)據(jù)庫

2023-08-08 08:01:22

微服務(wù)架構(gòu)服務(wù)

2010-06-10 17:05:28

2009-11-06 16:59:26

WCF性能計數(shù)器

2023-07-28 08:15:27

PC程序計數(shù)器

2010-05-14 10:39:32

MySQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號