MySQL中变量和@variable的区别是什么

MySQL中变量和@variable的区别是什么,mysql,database,Mysql,Database,如果我们在mysql中声明一个变量为: declare prev_year int; 是否设置上一年=100和设置为上一年=100相同 它们看起来像不同的变量,有什么区别呢?不,它们实际上并不相同。。。但根据所使用的上下文,它们可以被视为相同的 我会解释的。MySQL有会话变量,这些变量在会话结束前一直有效(请考虑连接变量)。这些变量用@符号声明。因此,您可以执行这两条语句,它将起作用: SET @myId := 123; SELECT * FROM table WHERE id = @my

如果我们在mysql中声明一个变量为:

declare prev_year int;
是否
设置上一年=100
设置为上一年=100相同


它们看起来像不同的变量,有什么区别呢?

不,它们实际上并不相同。。。但根据所使用的上下文,它们可以被视为相同的

我会解释的。MySQL有会话变量,这些变量在会话结束前一直有效(请考虑连接变量)。这些变量用
@
符号声明。因此,您可以执行这两条语句,它将起作用:

SET @myId := 123;

SELECT * FROM table
WHERE id = @myId;
当您创建存储过程并使用时,请声明您的变量在该过程的范围内,例如

DECLARE myId INT;

SELECT id INTO myId FROM table
WHERE name = 'steve';

+1对于重复项-应在键入应答之前进行检查在什么情况下它们是相同的?抱歉,我没有明确说明,您可以在存储过程中使用会话变量,这意味着它们看起来是相同的,尽管会话变量将持续到会话结束。