我尝试了this 解决方案,但如果您想逐个查询,则无效!
代码:
Declare @ID int;
SET @ID = SELECT TOP(1) ID FROM Students
// After that query is ran I will run this query
SELECT *
FROM Courses AS C
WHERE C.studentID = @ID
// These above queries aren't great way to query it,
// but I am just trying to illustrate what I am trying to achieve
它工作正常并将该查询的结果存储在
中@ID
暂时如果这两个查询一起运行,我不想这样做。
我们有什么办法可以保存变量中的值吗?就像运行第一个查询并将ID存储在变量中一样,然后运行第二个查询。
我知道我们可以在存储过程中完成它,但我想知道我们是否可以在查询窗口中执行!
谢谢
答案 0 :(得分:0)
你可以这样使用
Declare @ID int;
select TOP(1) @ID = ID from Students
--select @id
Select * from Courses as C where C.studentID = @ID
答案 1 :(得分:0)
MSSQL服务器没有全局变量的概念,所以你不能 运行第一个查询并将ID存储在变量中,然后运行第二个查询。
如果将它存储在如上所示的变量中,它将只持续到查询完成。
如果您希望当前查询窗口可用,无论您执行什么查询,都有多种方法可以执行此操作。
1)将其选入临时表(#tablename),并在当前查询窗口中可用
2)将其选择为全局临时表(## tablename),它可用于当前会话
3)另一种方法是让它可用于当前会话,将其存储在上下文信息中然后检索它。 为了您的目的,#table似乎是更合适的选择。
答案 2 :(得分:0)
SQL Server变量旨在单批处理。因此,必须一次性执行包含变量的完整代码。