如何将SQL语句的结果集存储到变量中?

如何将SQL语句的结果集存储到变量中?,sql,sql-server,Sql,Sql Server,我正在编写一个SP,我想知道是否可以将语句的结果存储到一个变量中,然后触发另一个查询 例如,下面的查询给了我一个id,我需要将这个id用于另一个Insert语句 variable id = Select id from tableA where myCondition = 'this'; Insert into tableB values(id, a, ab ,c); 我不确定SQL Server中是否存在类似的东西,我可以在这里定义一个变量,在本例中,id是int类型,稍后使用它 谢谢只需声

我正在编写一个SP,我想知道是否可以将语句的结果存储到一个变量中,然后触发另一个查询

例如,下面的查询给了我一个
id
,我需要将这个
id
用于另一个Insert语句

variable id = Select id from tableA where myCondition = 'this';
Insert into tableB values(id, a, ab ,c);
我不确定SQL Server中是否存在类似的东西,我可以在这里定义一个变量,在本例中,
id
是int类型,稍后使用它


谢谢

只需声明一个变量并将查询结果分配给该变量即可

DECLARE @Id INT = (SELECT id FROM tableA WHERE myCondition = 'this');
然后你可以做:

INSERT INTO tableB values(@Id, a, ab ,c);

只需声明一个变量并将查询结果分配给该变量

DECLARE @Id INT = (SELECT id FROM tableA WHERE myCondition = 'this');
然后你可以做:

INSERT INTO tableB values(@Id, a, ab ,c);

如果select语句中返回的行数超过1行,则可以使用表变量:

DECLARE @temp TABLE (id int) 

INSERT INTO @temp (id)
SELECT id FROM tableA WHERE myCondition = 'this'

INSERT INTO tableB
SELECT T.id, a, ab, c
  FROM @temp T  ...

如果select语句中返回的行数超过1行,则可以使用表变量:

DECLARE @temp TABLE (id int) 

INSERT INTO @temp (id)
SELECT id FROM tableA WHERE myCondition = 'this'

INSERT INTO tableB
SELECT T.id, a, ab, c
  FROM @temp T  ...

谢谢佐尔科洛特。很高兴知道这一点。:)谢谢佐尔科洛特。很高兴知道这一点。:)