簡體   English   中英

將多個查詢合並為一個查詢(在SQL Server中,是否帶有變量?)

[英]combining a multiple queries into a single query (in SQL Server, with variables?)

我想將以下查詢應用於大量地點的另外兩個circ_slip值(“付款”和“退款”)。

delete from circ_slip_field 
where location = 'NEW LOCATION' and circ_slip = 'waive'
go
declare @copy_loc varchar(7), @new_loc varchar(7) 
select @copy_loc = 'OLD LOCATION' 
select @new_loc = 'NEW LOCATION'
insert circ_slip_field
       (circ_slip,location,section,ord,circ_slip_field_type,label,field_column,
        append_to_prev,justify,max_field_len,min_field_len,data_mask)
select  circ_slip,@new_loc,section,ord,circ_slip_field_type,label,field_column,
        append_to_prev,justify,max_field_len,min_field_len,data_mask
from circ_slip_field 
where circ_slip = 'waive' and location = @copy_loc

因此,我將以下行添加到開頭,然后復制了原始查詢三遍,分別用“支付”和“退款”替換了“放棄”的兩個實例。

 declare @copy_loc varchar(7), @new_loc varchar(7) 
 select @copy_loc = 'COPY LOCATION' 
 select @new_loc = 'NEW LOCATION'

我還刪除了兩個選擇變量語句(@copy_loc和@new_loc),因為它們已被聲明。

有什么想法為什么對我不起作用? 我將不勝感激。 不用說,我一般對SQL還是很陌生。

**編輯:“沒有工作”是指查詢運行沒有錯誤,但未對“新位置”進行任何更改。

*第二編輯:我認為問題可能出在“執行”命令上。 為了使變量始終有效,我需要從三個重復的查詢中刪除“ go”。

注意,@copy_loc和@new_loc被定義為varchar(7),但是您要在其中輸入12個字符。 它們被截斷,將與表中的字段不匹配。 使變量varchar(50)。 不用擔心,它不會使用比所需更多的空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM