हाँ, पर आप क्वेरी में चर काम बढ़ने की जरूरत है: या तो
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 @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` FROM user LIMIT 1 INTO @group;
SELECT * FROM user WHERE `group` = @group;
स्रोत
2010-10-08 08:08:08
Btw, आप पहले बयान के उत्पादन को दबाने सकता है (अपने ही चर काम के रूप में) और केवल दूसरे प्रश्न के उत्पादन में दिखाते हैं? –
@Avada: एक विकल्प के साथ मेरा उत्तर अपडेट किया गया, जो परिवर्तनीय असाइनमेंट के परिणाम को आउटपुट नहीं करता है। –
डैनियल पर स्पॉट। धन्यवाद! –