2017-04-05 20 views
0

如何從第二時間休息,而不是從第一時間?休息時使用,而

declare @i int, @j int 
select @i = 0, @j = 0 
while @i < 3 begin ---first while 
    while @j < 3 begin 
     select @i as i, @j as j ---second while 
     set @j = @j + 1 
     break 
    end 
    set @i = @i + 1 
set @j = 0 
end 
+4

到目前爲止,最好的方法是重新考慮這種方法。循環效率非常低,幾乎總是可以使用基於集合的方法進行重寫。 –

+0

實際上是什麼問題?你已經從第二個休息,而不是? – Romain

回答

0

您的代碼,因爲它是寫,並從SQL Server上的第二,同時(內環)2014

  1. i和j爲0
  2. 集爆發進入外環
  3. 進入內環
  4. 表示,i和j(0,0)
  5. j增加(現1)
  6. 打破了內環在外環
  7. i遞增(現1)
  8. 再次進入內部循環(因爲它不出去外環的)
  9. 表示,i和j(1,1)
  10. j增加(今2)
  11. 跳出內循環的
  12. 使i遞增(今2)在外環
  13. 進入內循環,並表示,i和j(2,2)
  14. j增加(現在3)
  15. ,跳出內循環
  16. 增量I(現3)外環
  17. 點擊退出條件,因爲@i不小於3
  18. 退出

這是你所期望的?你使用的是什麼版本的SQL Server? (我相信他們在這方面應該都是一樣的)