一尘不染

根据查询设置变量结果

mysql

创建保存的过程时,可以创建一些变量吗?例如:

CREATE PROCEDURE `some_proc` ()  
BEGIN

   DECLARE some_var INT; 
   SET some_var = 3;
....

问题:但是如何从查询中设置变量结果,即如何进行如下设置:

DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;


阅读 238

收藏
2020-05-17

共1个答案

一尘不染

有多种方法可以做到这一点。

您可以使用子查询:

SET @some_var = (SELECT COUNT(*) FROM mytable);

(就像您的原始文章一样,只需在查询周围添加括号)

或使用SELECT INTO语法分配多个值:

SELECT COUNT(*), MAX(col)
INTO   @some_var, @some_other_var
FROM   tab;

子查询语法稍微快一些(我不知道为什么),但是只能分配一个值。select
into语法允许您一次设置多个值,因此,如果需要从查询中获取多个值,则应该这样做,而不是针对每个变量一次又一次地执行查询。

最后,如果您的查询返回的不是一个行而是一个结果集,则可以使用cursor

2020-05-17