2010-10-08 47 views
136

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

我想达到的目标是这样的(我们可以假定这两个USERGROUP是唯一的):

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

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

回答

248

是的,但你需要给变量赋值进入查询:

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语句中被视为比较运算符。


UPDATE:

而且到下面的评论,你也可以做到以下几点:

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

顺便说一句,你能抑制第一条语句的输出(作为其唯一的变量赋值),并只显示第二查询的输出? – 2010-10-08 08:15:04

+2

@Avada:用另一种方法更新了我的答案,该方法不会为变量赋值输出结果。 – 2010-10-08 08:19:22

+0

丹尼尔现货。谢谢! – 2010-10-08 09:14:32

41

只需加括号周围的查询:

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

使用这样就不会显示结果同时运行存储过程。

查询:

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

穆罕默德·哈桑(Rupam)

2

首先让我们来看看我们如何定义MySQL中的变量

要定义在My​​SQL 它varible应该以'@'开始,如@ {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>选择@a;

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

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

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

  1. @a:=(从选择employee EMP_NAME其中EMP_ID = 1);

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

务必小心emp_name必须返回单个值否则它会在此类型语句中引发错误。

是指这样的: - http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql

相关问题