MySQL:从查询结果中设置用户variables

是否有可能根据MySQL中的查询结果设置用户variables?

我想实现的是这样的(我们可以假设USERGROUP都是唯一的):

 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赋值。 为此,我们有很多方法来做到这一点

  1. 使用关键字'SET'。

例如: – mysql> SET @a = 1;

  1. 不使用关键字“SET”并使用“:=”。

例如: – mysql> @a:= 1;

  1. 通过使用“SELECT”语句。

例如: – mysql> select 1 into @a;

这里@a是用户定义的variables,1将在@a中分配。

现在如何获取或select@ {variable_name}的值。

我们可以使用select语句

例如: –

mysql> select @a;

它会显示输出并显示@a的值。

现在如何从variables中的表中分配一个值。

为此,我们可以使用两个语句,如:

  1. @a:=(从emp_id = 1的employee中selectemp_name);

  2. 从雇员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)