0
我的任務是編輯SQL Management Studio中的存儲過程。我已經完成了所需的工作,但是這樣做的一個副產品就是現在這些記錄正在填充不需要的數據。我期待排除基於可變LINE_CD數據和希望過濾(收到)的數據是LINE_CD < = 14或LINE_CD = 21根據SQL中的值排除數據庫條目while循環
目前我已經編輯其他記錄索要LINE_CD < = 14或LINE_CD = 21,但是有一個while循環,它使用了一個設置爲21的變量「MAXLINECD」。(這曾經是14,代表我們已經有的行,現在添加了一個新行)我只想要所有的LINE_CD < = 14或LINE_CD = 21
的循環是:
DECLARE @Index int, @LINE_CD int, @ORDER int
SELECT @LINE_CD = 1, @ORDER = 51
WHILE @LINE_CD <= @MAX_LINE_CD
BEGIN
我可以寫類似:
DECLARE @Index int, @LINE_CD int, @ORDER int
SELECT @LINE_CD = 1, @ORDER = 51
WHERE @LINE_CD =1, @ORDER = 51 not in
(SELECT @LINE_CD, @ORDER WHERE LINE_CD <=14 OR LINE_CD = 21)
WHILE @LINE_CD <= @MAX_LINE_CD
BEGIN
給我只是LINE_CD的:1,2,3,4,5,6,7,8,9,10,11,12,13,14 & 21?
我的猜測是你實際上並不需要在這裏使用循環。循環在SQL服務器中的效率非常低,幾乎總是可以由基於集合的邏輯代替,它不僅更快,而且更易於維護,因爲它不復雜。 –