gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:10:25 26 4
gpt4 key购买 nike

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

最佳答案

更好您需要使用临时表或表变量来存储结果集并重用它。因为变量只能保存一个值。

 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 =t.id

您还可以使用table变量。看下面的例子

declare @temp as table
(
id int
)
insert into @temp
(
id
)
select id from student where group=1;

然后重复使用它..

select * from address a
join @temp t on a.std_ref_id =t.id

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

关于mysql - 如何将查询结果存储在MySql存储过程的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40671299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com