如何在mysql中声明一个变量,让我的第二个查询可以使用它?
我想这样写:
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
如何在mysql中声明一个变量,让我的第二个查询可以使用它?
我想这样写:
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
当前回答
设置值
declare @Regione int;
set @Regione=(select id from users
where id=1) ;
select @Regione ;
其他回答
设置值
declare @Regione int;
set @Regione=(select id from users
where id=1) ;
select @Regione ;
对于任何使用concat_ws函数中的@variable来获得连接值的人,不要忘记用空值重新初始化它。否则,它可以对同一会话使用旧值。
Set @Ids = '';
select
@Ids := concat_ws(',',@Ids,tbl.Id),
tbl.Col1,
...
from mytable tbl;
不同类型的变量:
局部变量(没有@前缀)是强类型的,范围限定在声明它们的存储程序块中。请注意,如DECLARE语法中所述:
DECLARE只允许在BEGIN…END复合语句,必须在其开头,在任何其他语句之前。
用户变量(前缀为@)类型松散,范围仅限于会话。注意,它们既不需要声明,也不能声明——直接使用即可。
因此,如果你在定义一个存储程序,并且确实需要一个“局部变量”,你将需要删除@字符,并确保你的DECLARE语句位于程序块的开头。否则,要使用“用户变量”,请删除DECLARE语句。
此外,你需要把你的查询用圆括号括起来,以便作为子查询执行:
SET @countTotal = (SELECT COUNT(*) FROM nGrams);
或者,你可以使用SELECT…成:
SELECT COUNT(*) INTO @countTotal FROM nGrams
使用set或select
SET @counter := 100;
SELECT @variable_name := value;
例子:
SELECT @price := MAX(product.price)
FROM product
声明: SET @a = 1; 用法: INSERT INTO ' t ' (' c ') VALUES (@a);