我想将查询的结果(1列)存储在变量中,以便我可以在其他查询中重复使用它进行过滤
例如:
学生表
+----+------+------------+--------------+-------+
| id | name | dob | email | group |
+----+------+------------+--------------+-------+
| 1 | Sam | 1990-12-12 | sam@test.com | 1 |
+----+------+------------+--------------+-------+
| 2 | Tom | 1990-12-11 | tom@test.com | 1 |
+----+------+------------+--------------+-------+
| 3 | Kim | 1990-11-11 | kim@test.com | 2 |
+----+------+------------+--------------+-------+
查询
select id from student where group=1;
这会给我
+----+
| id |
+----+
| 1 |
+----+
| 2 |
+----+
我想要实现的是将上述结果存储在一个变量中,以便我可以在多个查询中的这样的过程中重复使用它。
select * from address where std_ref_id in (@theVariable);
select * from some_table where std_ref_id in (@theVariable);
答案 0 :(得分:0)
更好您需要使用Temp Table或表变量来存储结果集并重用它。因为变量可以保存一个值。
length
然后使用如下的临时表
products
您还可以使用 if object_id('tempdb..#temp1') is not null
drop table #temp1
select id into #temp1 from student where group=1;
变量。看下面的例子
select * from address a
join #temp1 t on a.std_ref_id =b.id
然后重复使用..
table
但是表变量和临时表在范围等方面存在差异。