如何在mysql查询中使用select参数分配?

ve7v8dk2  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(359)

我一直在将mssqldb迁移到mysql中,遇到了一个语法我在任何地方都找不到,需要这个帮助。所有的“mysql参数”问题都涉及“select*from mytable where id=@id”,但我在寻找以下语法:

SELECT @MyParam = MyValue FROM MyTable

“select myvalue from mytable”返回值,而运行上述@myparam查询返回空值。
从前面的回答中我看到,与mssql不同,mysql中的参数不是用任何数据类型预定义的。
我错过了什么?
谢谢

htzpubme

htzpubme1#

将mssqlserver过程转换为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;
eqqqjvef

eqqqjvef2#

你需要使用 := 运算符而不是 = ,将值赋给 SELECT 条款。前者是赋值运算符;后者是比较算子。

SELECT @MyParam := MyValue FROM MyTable

但是,如果您正在使用 SET 子句,则可以使用 = 或者 := . 来自文档:
对于set,=或:=可以用作赋值运算符。
更多文档:
以这种方式做作业时(使用 SELECT ),必须使用:=作为赋值运算符;=在set以外的语句中被视为比较运算符。

相关问题