偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

應(yīng)用場(chǎng)景,比如說有一個(gè)商場(chǎng),每賣一個(gè)產(chǎn)品都產(chǎn)生一個(gè)流水,然后我們需要知道每筆流水是該產(chǎn)品第幾次出售的,這樣說可能不明白,我拿一個(gè)詳細(xì)的數(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 

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

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

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

呵,還學(xué)到一點(diǎn),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)建臨時(shí)表
 

  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; 

刪除臨時(shí)表
 

  1. END; 

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

【編輯推薦】

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

2010-06-12 17:16:46

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

2010-06-07 14:34:49

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

2010-07-30 15:44:04

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

2010-05-05 10:19:19

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

2010-06-28 10:36:42

SQL Server數(shù)

2010-05-17 17:35:30

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

2010-05-17 15:34:30

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

2010-07-01 11:14:36

SQL Server

2010-07-15 15:50:58

安裝SQL Serve

2011-05-26 15:53:59

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

2010-06-17 12:35:49

SQL Server數(shù)

2010-07-15 09:47:09

SQL Server數(shù)

2010-07-01 16:52:53

SQL Server數(shù)

2010-07-12 14:55:34

SQL Server

2023-08-08 08:01:22

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

2010-06-01 12:51:23

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

2010-06-10 17:05:28

2010-05-14 10:39:32

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

2009-12-17 13:30:49

Ruby操作Acces

2009-11-06 16:59:26

WCF性能計(jì)數(shù)器
點(diǎn)贊
收藏

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