sql嵌套循环
‘壹’ sql server中 in() 嵌套问题
sqlserver嵌套查询语句中使用in或者exists的场景和原则如下:
如果查询的两个表大小相当,那么用in和exists差别不大。两者都可以使用。
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。所以当有多重循环,使用in更合适,效率越高。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。
NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度。
‘贰’ SQL数据库中:分支语句和循环语句各自可以嵌套,也可以相互嵌套。这个
可以多个嵌套,但是只要一个条件不满足结果都查询不到,你把语句写出来看下
Update
Table
Set
a='5'
Where
b=
(Select
b
From
Table
Where
c
In
(Select
c
From
Dmpedi.Pps_Temp
Where
b
=
'2'
And
Rownum
<
5)
And
Rownum
=
1)
‘叁’ SQL Server 游标嵌套
是可以嵌套的,原理如下:declare 外层游标
open 外层游标
fetch next ...提取外层游标行
while @@FETCH_STATUS = 0
begin
declare 内层游标
open 内层游标
ftech next ...提取内层游标行
while @@FETCH_STATUS = 0
begin
.....处旅世和理内层游标
ftech next ....内层游标向下移动一行
end
close 内层游标
deallocate 内层游拆盯标
fetch next ....内层游返困标处理结束后,外层游标才继续向下移动一行
end
close 外层游标
deallocate 外层游标
也就是说,外层游标每移动一行,就要重复进行内层游标定义,打开,循环,关闭,释放等操作,然后才能再向下移动行实例看我的博客: http://blog.csdn.net/gxiangzi/article/details/6774786