2010-10-08 254 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