亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL雙層游標嵌套循環(huán)實現方法

 更新時間:2024年05月05日 11:06:50   作者:bacawa  
要實現逐行獲取數據,需要用到MySQL中的游標,一個游標相當于一個for循環(huán),這里需要用到2個游標,如何在MySQL中實現游標雙層循環(huán)呢,下面小編給大家分享MySQL雙層游標嵌套循環(huán)方法,感興趣的朋友跟隨小編一起看看吧

1、需求描述

1、在項目中,需要將A表中主鍵id,逐個取出,作為條件,在B表中去逐一查詢,將B表查詢到的結果集(A表B表關系:一對多),逐一遍歷,連同A表的id拼接運算,逐個插入到C表中。

2、 在Java中很容易實現,A表獲取到的結果集,循環(huán)遍歷取出id,去B表查詢;遍歷B表結果集,插入到C表中。 相當于2個循環(huán),即可實現需求。 這樣會有一個問題,頻繁連接數據庫,造成大量資源開銷。 那么在存儲過程中,該怎么實現呢?

2、思路

  要實現逐行獲取數據,需要用到MySQL中的游標,一個游標相當于一個for循環(huán),這里需要用到2個游標。如何在MySQL中實現游標雙層循環(huán)呢?

3、創(chuàng)建存儲過程

CREATE DEFINER=`root`@`%` PROCEDURE `student`()
BEGIN
	-- 定義變量
		-- 假設有一張學生表,有id,student_name字段
		DECLARE outer_done INT DEFAULT FALSE; -- 外層游標控制變量
		DECLARE studentTableId int;    -- 學生表ID
		declare studentTableName VARCHAR(100);   -- 學生姓名
		declare outer_cursor cursor for select id,student_name from student_table  where `disable` = '0'; 
		DECLARE CONTINUE HANDLER FOR NOT FOUND SET outer_done = TRUE;
		open outer_cursor;     
			while not outer_done do
					fetch outer_cursor into studentTableId,studentTableName;  -- 這里循環(huán)取值,賦值到上面定義的變量中
						-- 開始定義內層游標
						BEGIN -- inner BEGIN
								-- 假設有一張成績表,包含字段id,student_name,score字段
								DECLARE scoreTableId int;    -- 成績Id
								declare scoreTableName VARCHAR(100);    -- 學生名字
								declare scoreTableScore float;   -- 學生分數
								DECLARE inner_done int DEFAULT FALSE ;
								DECLARE my_value VARCHAR(255);
								declare inner_cursor cursor for select id,student_name,score from score_table where `disable` = '0'; 
								DECLARE CONTINUE HANDLER FOR NOT FOUND SET inner_done  = TRUE ;
								OPEN inner_cursor; -- 打開內層游標
								WHILE not inner_done DO -- inner WHILE
									FETCH inner_cursor INTO scoreTableId,scoreTableName,scoreTableScore ; -- 從【內層游標】中獲取數據,賦值到定義變量中
									 IF studentTableName = scoreTableName THEN    -- 判斷名字一樣(測試,生產不要用名稱進行判斷)
										set my_value = CONCAT_WS('-',studentTableName,scoreTableScore);    -- 給變量賦值 CONCAT_WS函數可以按照固定的連接符,將數據進行連接,例如 張三-95
										select my_value;     -- 打印變量值
									 END IF;
									 -- 假設有一張匯總表(summary_table),將處理的數據進行更新
									 update summary_table set summary_column=my_value where summary_table_student_id=studentTableId;
								END WHILE ; -- END inner WHILE
								CLOSE inner_cursor; -- 循環(huán)結束后,關閉內層游標
						END; -- END inner BEGIN
			end while;        
		close outer_cursor;  
END

看圖清晰一點。

到這里就完成了,存儲過程里面的注釋很詳細,就不多贅述了,我在寫存儲過程中也是踩了不少坑,記錄下來,希望能幫到各位coder。

到此這篇關于MySQL雙層游標嵌套循環(huán)方法的文章就介紹到這了,更多相關mysql游標嵌套循環(huán)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Linux下將數據庫從MySQL遷移到MariaDB的基礎操作教程

    Linux下將數據庫從MySQL遷移到MariaDB的基礎操作教程

    這篇文章主要介紹了將數據庫從MySQL遷移到MariaDB的基礎操作教程,當然遷移之前不要忘記數據庫的備份!需要的朋友可以參考下
    2015-11-11
  • MySQL之七種SQL JOINS實現的圖文詳解

    MySQL之七種SQL JOINS實現的圖文詳解

    這篇文章主要介紹了MySQL中七種SQL JOINS的實現方法及圖文詳解,文中也有相關的代碼示例供大家參考,感興趣的同學可以參考閱讀下
    2023-06-06
  • MySql存儲過程之邏輯判斷和條件控制

    MySql存儲過程之邏輯判斷和條件控制

    本篇文章給大家介紹了mysql存儲過程之邏輯判斷、條件控制,涉及到的知識點有邏輯判斷、條件控制方面的內容,對mysql存儲過程邏輯判斷和條件控制感興趣的朋友可以參考下本文
    2015-10-10
  • MySQL數據被誤刪的解決方法

    MySQL數據被誤刪的解決方法

    之前被要求開發(fā)一個OA項目,需求還要及時生效(一邊開發(fā)一邊使用),有一次生產環(huán)境的一個bug本地沒辦法復現,在調試的過程中,我倆當作開發(fā)環(huán)境很自然的把數據給刪了,所以在這里記錄一下MySQL數據備份和恢復的方法及操作,希望可以幫助到跟我一樣的小伙伴
    2024-01-01
  • mysql觸發(fā)器一個表改變另一個表也改變問題

    mysql觸發(fā)器一個表改變另一個表也改變問題

    這篇文章主要介紹了mysql觸發(fā)器一個表改變另一個表也改變問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL中substr函數使用方法實例詳解

    MySQL中substr函數使用方法實例詳解

    MySQL的SUBSTR()函數可以用于從指定字符串的指定位置開始提取指定長度的字符,下面這篇文章主要給大家介紹了關于MySQL中substr函數使用方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • 深入解析MySQL的事務隔離及其對性能產生的影響

    深入解析MySQL的事務隔離及其對性能產生的影響

    這篇文章主要介紹了MySQL的事務隔離及其對性能產生的影響,在MySQL的優(yōu)化方面具有一定的借鑒意義,需要的朋友可以參考下
    2015-12-12
  • mysql 8.0.15 安裝配置方法圖文教程(Windows10 X64)

    mysql 8.0.15 安裝配置方法圖文教程(Windows10 X64)

    這篇文章主要為大家詳細介紹了Windows10 X64 mysql 8.0.15 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • mysql alter table命令修改表結構實例

    mysql alter table命令修改表結構實例

    這篇文章主要介紹了mysql alter table命令修改表結構實例的相關資料,需要的朋友可以參考下
    2016-10-10
  • mybatis分頁插件pageHelper詳解及簡單實例

    mybatis分頁插件pageHelper詳解及簡單實例

    這篇文章主要介紹了mybatis分頁插件pageHelper詳解及簡單實例的相關資料,需要的朋友可以參考下
    2017-05-05

最新評論