是否可以根據MySQL中的查詢結果設置用戶變量?MySQL:根據查詢結果設置用戶變量
我想達到的目標是這樣的(我們可以假定這兩個USER
和GROUP
是唯一的):
set @user = 123456;
set @group = select GROUP from USER where User = @user;
select * from USER where GROUP = @group;
請注意,我知道這是可能的,但我不希望使用嵌套做到這一點查詢。
是否可以根據MySQL中的查詢結果設置用戶變量?MySQL:根據查詢結果設置用戶變量
我想達到的目標是這樣的(我們可以假定這兩個USER
和GROUP
是唯一的):
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;
測試用例:
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;
只需加括號周圍的查詢:
set @user = 123456;
set @group = (select GROUP from USER where User = @user);
select * from USER where GROUP = @group;
使用這樣就不會顯示結果同時運行存儲過程。
查詢:
SELECT a.strUserID FROM tblUsers a WHERE a.lngUserID = lngUserID LIMIT 1 INTO @strUserID;
穆罕默德·哈桑(Rupam)
首先讓我們來看看我們如何定義MySQL中的變量
要定義在MySQL 它varible應該以'@'開始,如@ {variable_name}和這個'{variable_name}',我們可以用我們的變量名替換它。
現在,如何在mysql中爲變量賦值。爲此我們有很多方法可以做到這一點
例如: - mysql> SET @a = 1;
例如: - mysql> @a:= 1;
例如: - mysql> select 1 into @a;
這裏@a是用戶定義的變量,1將在@a中分配。
現在如何獲取或選擇@ {variable_name}的值。
我們可以使用select語句像
例子: -
的mysql>選擇@a;
它會顯示輸出並顯示@a的值。
現在如何從變量中的表中分配一個值。
爲此,我們可以使用兩個語句,如: -
@a:=(從選擇employee EMP_NAME其中EMP_ID = 1);
將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
順便說一句,你能抑制第一條語句的輸出(作爲其唯一的變量賦值),並只顯示第二查詢的輸出? – 2010-10-08 08:15:04
@Avada:用另一種方法更新了我的答案,該方法不會爲變量賦值輸出結果。 – 2010-10-08 08:19:22
丹尼爾現貨。謝謝! – 2010-10-08 09:14:32