MySQL:根据查询结果设置用户变量

MySQL:根据查询结果设置用户变量,mysql,Mysql,是否可以根据MySQL中的查询结果设置用户变量 我想要达到的是这样的效果,我们可以假设用户和组都是唯一的: set @user = 123456; set @group = select GROUP from USER where User = @user; select * from USER where GROUP = @group; 请注意,我知道这是可能的,但我不希望对嵌套查询执行此操作。是,但您需要将变量赋值移动到查询中: SET @user := 123456; SELECT @g

是否可以根据MySQL中的查询结果设置用户变量

我想要达到的是这样的效果,我们可以假设用户和组都是唯一的:

set @user = 123456;
set @group = select GROUP from USER where User = @user;
select * from USER where GROUP = @group;

请注意,我知道这是可能的,但我不希望对嵌套查询执行此操作。

是,但您需要将变量赋值移动到查询中:

SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;
set @user = 123456;
set @group = (select GROUP from USER where User = @user);
select * from USER where GROUP = @group;
测试用例:

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,可以使用=或:=作为赋值运算符。但是,在其他语句中,赋值运算符必须是:=而不是=,因为=在非SET语句中被视为比较运算符

更新:

除以下评论外,您还可以执行以下操作:

SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group; 
SELECT * FROM user WHERE `group` = @group;

只需在查询周围添加括号:

SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;
set @user = 123456;
set @group = (select GROUP from USER where User = @user);
select * from USER where GROUP = @group;

使用这种方式,以便在运行存储过程时不会显示结果

查询:

从tblUsers a中选择a.strUserID,其中a.lngUserID=lngUserID LIMIT 1进入@strUserID;
首先让我们看看如何在mysql中定义变量

在mysql中定义变量 它应该以“@”开头,比如“{variable_name}”,这个“{variable_name}”,我们可以用变量名替换它

现在,在mysql中如何在变量中赋值。为此,我们有很多方法可以做到这一点

使用关键字“SET”。 例如:-

mysql>SET@a=1; 不使用关键字“SET”并使用“:=”。 例如:-

mysql>@a:=1; 通过使用“SELECT”语句。 例如:-

mysql>选择1进入@a; 这里@a是用户定义的变量,1将在@a中赋值

现在,如何获取或选择@{variable_name}的值

我们可以使用select语句,如

例如:-

mysql>选择@a; 它将显示输出并显示@a的值

现在了解如何从变量中的表中赋值

为此,我们可以使用以下两种语句:-

一,

@a:=从emp_id=1的员工中选择emp_名称; 从emp_id=1的emp_employee中选择emp_name到@a中; 请务必小心emp_name必须返回单个值,否则它将在该类型语句中引发错误

请参阅:-

顺便说一句,您能否禁止将第一条语句的输出作为其唯一的变量赋值,并仅显示第二个查询的输出?@Avada:用另一个选项更新了我的答案,该选项不会输出变量赋值的结果。@DanielVassallo,还有。@DanielVassallo非常感谢您。这项工作很有帮助。我想在不返回select的情况下从select设置mysql变量。谢谢这将导致子查询返回的行数超过1行me@timbroder只需将限制1添加到查询中。不管怎样,我建议进行编辑以更正此问题。