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服务器中的效率非常低,几乎总是可以由基于集合的逻辑代替,它不仅更快,而且更易于维护,因为它不复杂。 –