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

时间:2010-10-08 08:04:05

标签: mysql

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

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

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

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

4 个答案:

答案 0 :(得分:297)

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

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;

答案 1 :(得分:57)

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

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

答案 2 :(得分:7)

首先让我们看一下如何在mysql中定义一个变量

在mysql中定义变量 它应该以&#39; @&#39;开头。比如@ {variable_name}和这个&#39; {variable_name}&#39;,我们可以用变量名替换它。

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

  1. 使用关键字&#39; SET&#39;。
  2. 示例: - mysql&gt; SET @a = 1;

    1. 不使用关键字&#39; SET&#39;并使用&#39;:=&#39;。
    2. 实施例: - mysql&gt; @a:= 1;

      1. 使用&#39; SELECT&#39;言。
      2. 实施例: - mysql&gt;选择1进入@a;

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

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

        我们可以使用像

        这样的select语句

        示例: -

        mysql&gt;选择@a;

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

        现在如何从变量中的表中分配值。

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

        1. @a:=(从员工处选择emp_name,其中emp_id = 1);

        2. 从员工中选择emp_name到@a,其中emp_id = 1;

        3. 一定要小心,emp_name必须返回单个值,否则会在此类型语句中引发错误。

          参考: - http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql

答案 3 :(得分:6)

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

查询:

SELECT a.strUserID FROM tblUsers a WHERE a.lngUserID = lngUserID LIMIT 1 INTO @strUserID;
相关问题