mysql 从查询结果设置用户变量

zlwx9yxi  于 2022-12-28  发布在  Mysql
关注(0)|答案(4)|浏览(158)

是否可以根据MySQL中的查询结果设置用户变量?
我想要实现的是这样的东西(我们可以假设USERGROUP都是唯一的):

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

请注意,我知道这是可能的,但我不希望这样做的嵌套查询。

6ljaweal

6ljaweal1#

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

SET @user := 123456;
SELECT @group := `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;
6l7fqoea

6l7fqoea2#

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

set @user = 123456;
set @group = (select GROUP from USER where User = @user);
select * from USER where GROUP = @group;
5uzkadbs

5uzkadbs3#

首先让我们看看如何在mysql中定义变量
要在mysql中定义一个变量,它应该以'@'开头,如@{variable_name}和这个'{variable_name}',我们可以用我们的变量名替换它。
现在,如何在mysql中给变量赋值,我们有很多方法来实现
1.使用关键字"SET"。
示例:-

mysql >  SET @a = 1;

1.不使用关键字"SET"而使用":="。
示例:-

mysql > @a:=1;

1.通过使用"SELECT"语句。
示例:-

mysql > select 1 into @a;

这里,@a是用户定义的变量,1将在@a中赋值。
现在介绍如何获取或选择@{variable_name}的值。
我们可以使用如下select语句
示例:-

mysql > select @a;

它将显示输出并显示@a的值。
现在,如何从表中为变量赋值。
为此,我们可以使用两个语句,如:
1.

@a := (select emp_name from employee where emp_id = 1);
select emp_name into @a from employee where emp_id = 1;

请务必小心,emp_name必须返回单个值,否则它将在此类型语句中引发错误。
引用此命令:-http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql

goqiplq2

goqiplq24#

使用此方法,以便在运行存储过程时不显示结果。
查询:

SELECT a.strUserID
FROM tblUsers a
WHERE a.lngUserID = lngUserID
LIMIT 1
INTO @strUserID;

相关问题