mysql存儲(chǔ)過程,實(shí)現(xiàn)兩個(gè)游標(biāo)的循環(huán)_MySQL教程
推薦:MYSQL的導(dǎo)入導(dǎo)出與還原備份導(dǎo)入與導(dǎo)出主要牽扯到兩個(gè)命令source和MySQLdump: 1:導(dǎo)入:進(jìn)入MySQL命令行中,進(jìn)入任意一個(gè)將要被導(dǎo)入的數(shù)據(jù)庫,再導(dǎo)入。具體的命令如下:進(jìn)入Windows的dos命令行'----------mysql -u root -p-------------輸入進(jìn)入數(shù)據(jù)庫的密碼------create database shujuku;-----
今天用php開發(fā)網(wǎng)站,遇到一個(gè)需求。統(tǒng)計(jì)網(wǎng)站關(guān)鍵詞的google流量,計(jì)算本周某個(gè)關(guān)鍵詞對(duì)于上周的google流量的增長。goole流量統(tǒng)計(jì)是通過日志分析程序獲取。本打算差值計(jì)算也用php實(shí)現(xiàn),但是一想還要循環(huán)查詢數(shù)據(jù)庫,會(huì)造成數(shù)據(jù)庫壓力,于是乎編寫了一個(gè)存儲(chǔ)過程。
首先數(shù)據(jù)結(jié)構(gòu):
CREATE TABLE `mobile_keywords_weeklog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`topdate` date DEFAULT NULL,
`keywords_id` int(11) DEFAULT '0',
`s_pv` int(11) DEFAULT '0',
`s_gv` int(11) DEFAULT '0',
`s_bv` int(11) DEFAULT '0',
`d_value` int(11) DEFAULT '0' COMMENT '和上一周的差值',
PRIMARY KEY (`id`),
KEY `topdate` (`topdate`),
KEY `keywords_id` (`keywords_id`),
KEY `s_pv` (`s_gv`)
) ENGINE=MyISAM AUTO_INCREMENT=702 DEFAULT CHARSET=latin1
存儲(chǔ)過程,實(shí)現(xiàn)了雙游標(biāo)的循環(huán):
DELIMITER $$
USE `brother_mobile`$$
DROP PROCEDURE IF EXISTS `pro_week_stat`$$
CREATE DEFINER=`root`@`%` PROCEDURE `pro_week_stat`()
top:BEGIN
DECLARE done INT DEFAULT 0;
DECLARE curr_week DATE;
DECLARE last_week DATE;
DECLARE a1,b1,c1 INT;
DECLARE a2,b2,c2 INT;
DECLARE d INT;
DECLARE is_update INT DEFAULT 0;
DECLARE all_week CURSOR FOR SELECT topdate FROM brother_mobile.mobile_keywords_weeklog GROUP BY topdate ORDER BY topdate DESC LIMIT 0,2;
DECLARE cur1 CURSOR FOR SELECT id,keywords_id,s_gv FROM brother_mobile.mobile_keywords_weeklog WHERE topdate = curr_week;
DECLARE cur2 CURSOR FOR SELECT id,keywords_id,s_gv FROM brother_mobile.mobile_keywords_weeklog WHERE topdate = last_week;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN all_week;
FETCH all_week INTO curr_week;
FETCH all_week INTO last_week;
CLOSE all_week;
IF IFNULL(curr_week,'')='' OR IFNULL(last_week,'')='' THEN
LEAVE top;
END IF;
OPEN cur1;
out_repeat:REPEAT
FETCH cur1 INTO a1,b1,c1;
BEGIN
DECLARE done1 INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done1 = 1;
OPEN cur2;
inner_repeat:REPEAT
FETCH cur2 INTO a2,b2,c2;
IF NOT done THEN
SET is_update=0;
IF b1 = b2 THEN
SET d = c1-c2;
SET is_update = 1;
UPDATE brother_mobile.mobile_keywords_weeklog SET d_value = d WHERE id = a1;
LEAVE inner_repeat;
END IF;
END IF;
UNTIL done1 END REPEAT inner_repeat;
CLOSE cur2;
END;
IF is_update <> 1 THEN
UPDATE brother_mobile.mobile_keywords_weeklog SET d_value = c1 WHERE id = a1;
END IF;
UNTIL done END REPEAT out_repeat;
CLOSE cur1;
END$$
DELIMITER ;
其中存儲(chǔ)過程中的具體語法可以查看mysql的幫助文檔。
最后用call pro_week_stat()調(diào)用即可。
分享:MySQL:grant 語法詳解(MySQL5.X)本文實(shí)例,運(yùn)行于MySQL5.0 及以上版本。 MySQL 賦予用戶權(quán)限命令的簡單格式可概括為: grant 權(quán)限on 數(shù)據(jù)庫對(duì)象to 用戶 一、grant 普通數(shù)據(jù)用戶,查詢、插入、更新、刪除數(shù)據(jù)庫中所有表數(shù)據(jù)的權(quán)利。 grant select on testdb.* to common_user@'%' grant insert on test
- MYSQL的導(dǎo)入導(dǎo)出與還原備份
- MySQL:grant 語法詳解(MySQL5.X)
- mysql中關(guān)于時(shí)間的函數(shù)使用教程
- 精妙SQL語句收集
- 開啟服務(wù)器Mcrypt.so加密庫的方法
- IIS 7.5通過web.config設(shè)置偽靜態(tài)規(guī)則方法
- Mysql字符串字段判斷是否包含某個(gè)字符串的2種方法
- MSSQL 18052錯(cuò)誤: 9003,嚴(yán)重度: 20,狀態(tài): 1
- 去掉mysql連接時(shí)報(bào)警聲音的方法
- mysql中文亂碼的一些解決方案
- sql寫注冊(cè)表語句例句
- sql檢測是否為SA權(quán)限語句
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- sqlserver數(shù)據(jù)實(shí)時(shí)同步到mysql
- 擁有5星評(píng)級(jí)數(shù)據(jù)庫表結(jié)構(gòu) 如何才能更高效的使用?
- 網(wǎng)站模板:以數(shù)據(jù)庫字段分組顯示數(shù)據(jù)的sql語句
- 驗(yàn)證實(shí)例名稱是否正確
- windows下重啟mysql的方法
- linux下mysql提示mysql deamon failed to start錯(cuò)誤的解決方法
- MySQL筆記之系統(tǒng)信息函數(shù)詳解
- MySQL的重裝問題解決方法
- 在SQL Server的try...catch語句中獲取錯(cuò)誤消息代碼的的語句
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽外網(wǎng)ip
猜你也喜歡看這些
- 經(jīng)驗(yàn)總結(jié):講解大型數(shù)據(jù)庫的設(shè)計(jì)準(zhǔn)則
- SQL Server2005的XML數(shù)據(jù)類型之基礎(chǔ)篇
- sql存儲(chǔ)過程的使用和介紹
- SQL Server不存在或訪問被拒絕 Windows里的一個(gè)bug
- SQL Server 2005深層工具和運(yùn)行時(shí)間集
- sqlserver數(shù)據(jù)庫出現(xiàn)置疑的解決思路
- 關(guān)于SQL 存儲(chǔ)過程入門基礎(chǔ)(變量)
- 談SQL Data Services將成為云中完整的數(shù)據(jù)庫
- SQLServer 2008中的代碼安全(四) 主密鑰
- SELECT 賦值與ORDER BY沖突的問題
- 相關(guān)鏈接:
復(fù)制本頁鏈接| 搜索mysql存儲(chǔ)過程,實(shí)現(xiàn)兩個(gè)游標(biāo)的循環(huán)
- 教程說明:
MySQL教程-mysql存儲(chǔ)過程,實(shí)現(xiàn)兩個(gè)游標(biāo)的循環(huán)
。