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