如何在MySQL查询中使用SELECT参数分配?

时间:2018-11-13 10:45:28

标签: mysql parameters

我一直在将MSSQL DB迁移到MySQL中,面对一种语法,我在任何地方都找不到,需要此帮助。 所有“ MySQL参数”问题都涉及“ select * from mytable,其中id = @id”,但我正在寻找以下语法:

SELECT @MyParam = MyValue FROM MyTable

“ SELECT MyValue FROM MyTable”返回值时,运行上面的@MyParam查询将返回NULL。

从先前的答案中,我看到与MSSQL相反,在MySQL中,参数未使用任何数据类型预定义。

我在这里想念什么?

THX

2 个答案:

答案 0 :(得分:2)

:=子句中将值分配给用户定义的变量时,需要使用=运算符而不是SELECT。以前是赋值运算符;而后者是比较运算符。

SELECT @MyParam := MyValue FROM MyTable

但是,如果使用SET子句,则可以使用=:=。来自docs

  

对于SET,可以将=或:=用作赋值运算符。

更多来自文档的信息:

  

以这种方式进行分配(使用SELECT)时,您必须使用   :=作为赋值运算符; =被视为比较运算符   在SET以外的语句中。

答案 1 :(得分:1)

将MS SQL Server过程转换为MySQL过程时,最好使用用DECLARE声明的局部变量。

@var变量是用户定义的变量,作用域是过程。因此,如果您的过程调用其他过程,则变量值可能会更改,而局部变量不会更改。局部变量也具有定义的类型。

要转换MS SQL Server语法

SELECT @MyParam = MyValue FROM MyTable

使用MySQL:

DECLARE vMyParam int;
SELECT MyValue INTO vMyParam FROM MyTable;

格式:

SELECT @MyParam := MyValue FROM MyTable

将导致该过程产生额外的结果集,因此您可能不希望这样做。

使用:=命令时,您可以使用SET格式,在该命令中可以显式设置变量的值。

SET vMyParam = 10;