MySQL:从查询结果中设置用户variables
是否有可能根据MySQL中的查询结果设置用户variables?
我想实现的是这样的(我们可以假设USER
和GROUP
都是唯一的):
set @user = 123456; set @group = select GROUP from USER where User = @user; select * from USER where GROUP = @group;
请注意,我知道这是可能的,但我不希望这样做嵌套查询。
是的,但是您需要将variables赋值移动到查询中:
SET @user := 123456; SELECT @group := `group` FROM user WHERE user = @user; SELECT * FROM user WHERE `group` = @group;
testing用例:
CREATE TABLE user (`user` int, `group` int); INSERT INTO user VALUES (123456, 5); INSERT INTO user VALUES (111111, 5);
结果:
SET @user := 123456; SELECT @group := `group` FROM user WHERE user = @user; SELECT * FROM user WHERE `group` = @group; +--------+-------+ | user | group | +--------+-------+ | 123456 | 5 | | 111111 | 5 | +--------+-------+ 2 rows in set (0.00 sec)
请注意,对于SET
,可以使用=
或:=
作为赋值运算符。 但是在其他语句中,赋值运算符必须是:=
和not =
因为=
在非SET语句中被视为比较运算符。
更新:
在下面的评论之后,您还可以执行以下操作:
SET @user := 123456; SELECT `group` FROM user LIMIT 1 INTO @group; SELECT * FROM user WHERE `group` = @group;
只需在查询周围添加括号即可:
set @user = 123456; set @group = (select GROUP from USER where User = @user); select * from USER where GROUP = @group;
首先让我们看看如何在mysql中定义一个variables
为了在mysql中定义一个variables,它应该像@ {variable_name}和这个'{variable_name}'一样以'@'开头,我们可以用我们的variables名来replace它。
现在,如何在mysql中为variables赋值。 为此,我们有很多方法来做到这一点
- 使用关键字'SET'。
例如: – mysql> SET @a = 1;
- 不使用关键字“SET”并使用“:=”。
例如: – mysql> @a:= 1;
- 通过使用“SELECT”语句。
例如: – mysql> select 1 into @a;
这里@a是用户定义的variables,1将在@a中分配。
现在如何获取或select@ {variable_name}的值。
我们可以使用select语句
例如: –
mysql> select @a;
它会显示输出并显示@a的值。
现在如何从variables中的表中分配一个值。
为此,我们可以使用两个语句,如:
-
@a:=(从emp_id = 1的employee中selectemp_name);
-
从雇员emp_id = 1selectemp_name到@a;
一定要小心emp_name必须返回单值,否则会在这个types的语句中抛出错误。
参考这个: – http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql
使用这种方式,以便运行存储过程时不会显示结果。 SELECT a.strUserID FROM tblUsers a WHERE a.lngUserID = lngUserID LIMIT 1 INTO @strUserID;
穆罕默德·哈桑(Rupam)