如何将查询结果存储在MySql存储过程中的变量中

时间:2016-11-18 07:09:47

标签: mysql sql

我想将查询的结果(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);

1 个答案:

答案 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

但是表变量和临时表在范围等方面存在差异。