从查询中设置变量result

ოთო*_*აძე 23 mysql variables stored-procedures variable-assignment multiple-columns

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

CREATE PROCEDURE `some_proc` ()  
BEGIN  

   DECLARE some_var INT; 
   SET some_var = 3;
....
Run Code Online (Sandbox Code Playgroud)

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

DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;
Run Code Online (Sandbox Code Playgroud)

Rol*_*man 50

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

您可以使用子查询:

SET some_var = (SELECT COUNT(*) FROM mytable);
Run Code Online (Sandbox Code Playgroud)

(就像你原来的一样,只需在查询周围添加括号)

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

SELECT COUNT(*), MAX(col)
INTO   some_var, some_other_var
FROM   tab;
Run Code Online (Sandbox Code Playgroud)

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

最后,如果您的查询不返回单行而是返回结果集,则可以使用游标.


jue*_*n d 8

以下选择语句应允许您保存count(*)的结果。

SELECT COUNT(*) FROM mytable INTO some_var;
Run Code Online (Sandbox Code Playgroud)

  • MySQL允许您在语句末尾将INTO子句设置为last子句。但是,在标准SQL中,它出现在SELECT和FROM子句之间。 (3认同)