我的SQL知识非常有限,这似乎应该很容易,但我无法弄清楚。
我有两个使用相同where
子句运行的查询。以前,我已将该号码粘贴在where
子句中两次。我认为必须有一种更简单的方法,所以我发现你可以做变量。
我的问题是在第一个查询中声明变量时,它会忘记它并且不会为第二个查询运行它。我可以解释很多术语,但下面的简单查询应该更好地解释它。第二个查询失败并说
我在第一个查询中声明的必须声明标量变量@p_repid
。
DECLARE @p_repid int=3427115
select fldRBuddyId, count(fldRBuddyId) "Repeats"
from tblMsgsOnAir_Type8 typ8
where fldCBuddyId = @p_repid
group by fldRBuddyID
having count(fldRBuddyId) > 1
order by "Repeats" desc
go
select FLDREPID,moa.FLDTGBID,tt.FLDNAME, count(*) "Count"
from TBLMSGSONAIR_1 moa
join TBLTOWERS_1 tt on moa.FLDTGBID=tt.FLDTGBID
where fldrepid = @p_repid
group by FLDREPID,moa.FLDTGBID,tt.FLDNAME
order by "Count" desc
go
提前感谢您的帮助。
答案 0 :(得分:3)
删除两个语句之间的GO
。那是MS SQL Server的批处理分隔符。
答案 1 :(得分:0)
如果您使用" GO"命令所有声明的变量都消失了。 尝试删除" GO"在中间。