如何在变量(全局)中设置SQL Server查询结果并重用它?

时间:2016-09-15 15:03:04

标签: sql-server

我尝试了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存储在变量中一样,然后运行第二个查询。

我知道我们可以在存储过程中完成它,但我想知道我们是否可以在查询窗口中执行!

谢谢

3 个答案:

答案 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变量旨在单批处理。因此,必须一次性执行包含变量的完整代码。