在需求處理中,我們會遇到需要通過sql多層迴圈來處理的問題。如:a表中有8條資料,b表中有10條資料,需要實現a表中的每1條資料對應b表中的10條資料,最後就有了80條資料,從而實現一對多的關係。那如何通過迴圈來處理呢?
下面就將為你介紹sql中while迴圈語句和通過游標來實現迴圈的例項,供你參考,希望對您學習sql中的迴圈語句能夠有所幫助。
注:示例中a表相當於t_test1,b表相當於t_test2
一、while迴圈實現
declare @user_tel varchar(20),@contact_tel varchar(20)
declare @i int,@j int,i_max int,@j_max int
select @i=1,@j=1
select @i_max=max(id) from t_test1
select @j_max=max(id) from t_test2
while @i<=@i_max
begin
select @user_tel=user_tel from t_test1 where id=@i
while @j<=@j_max
begin
select @contact_tel=user_tel from t_test2 where id=@j
insert into t_tmp(user_tel,contact_tel,nick_name,update_dt)
select @user_tel,@contact_tel,'如夢',getdate()
set @j=@j+1
endset @j=1
set @i=@i+1
end二、游標實現過程
--採用游標來實現迴圈處理
declare @user_tel varchar(20),@contact_tel varchar(20)
declare cur_test cursor for select user_tel from t_test1
declare @i int,@j_max int,
select @i=1
select @j_max=max(id) from t_test2
open cur_test
fetch next from cur_test into @user_tel
while @@fetch_status=0
begin
while @i<=@j_max
begin
select @contact_tel=user_tel from t_test2 where id=@i
insert into t_tmp(user_tel,contact_tel,nick_name,update_dt)
select @user_tel,@contact_tel,'如夢',getdate()
set @i=@i+1
endset @i=1
fetch next from cur_test into @user_tel
SQL中的迴圈 for迴圈 游標
sql中的迴圈 for迴圈 游標 1.利用游標迴圈更新 刪除memberaccount表中的資料 declare my cursor cursor 定義游標 for select from dbo.memberaccount 查出需要的集合放到游標中 open my cursor 開啟游標 fetc...
sql 迴圈,游標
declare userid varchar 50 declare my cursor cursor 定義游標 for select userid from dbo.memberaccount 查出需要的集合放到游標中 open my cursor 開啟游標 fetch next from my c...
sql游標迴圈
declare begindate datetime convert datetime,2019.05.06 09 40 50 enddate datetime getdate idint declare my cursor cursor 定義游標 for select id from dbo.op...