2010-10-08 15 views
136

क्या MySQL में किसी प्रश्न के परिणाम के आधार पर उपयोगकर्ता चर सेट करना संभव है?MySQL: क्वेरी के परिणाम से उपयोगकर्ता चर सेट करें

मैं क्या हासिल करना चाहते हैं (हम मान सकते हैं कि दोनों USER और GROUP अद्वितीय हैं) कुछ इस तरह है:

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; 

+--------+-------+ 
| 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; 
+2

Btw, आप पहले बयान के उत्पादन को दबाने सकता है (अपने ही चर काम के रूप में) और केवल दूसरे प्रश्न के उत्पादन में दिखाते हैं? –

+2

@Avada: एक विकल्प के साथ मेरा उत्तर अपडेट किया गया, जो परिवर्तनीय असाइनमेंट के परिणाम को आउटपुट नहीं करता है। –

+0

डैनियल पर स्पॉट। धन्यवाद! –

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; 

मोहम्मद हसन (रूपम)

2

पहले

mysql उस में एक varible परिभाषित करने के लिए हम mysql में एक चर कैसे परिभाषित कर सकते हैं पर एक नज़र डालें की सुविधा देता है @ @ 'जैसे @ {variable_name} और यह' {variable_name} 'से शुरू होना चाहिए, हम इसे अपने चर नाम से बदल सकते हैं।

अब, mysql में एक चर में मान कैसे असाइन करें। इसके लिए हमारे पास

  1. कीवर्ड 'SET' का उपयोग करने के कई तरीके हैं।

उदाहरण: - mysql> SET @a = 1;

  1. कीवर्ड 'सेट' का उपयोग किए बिना और ': =' का उपयोग किए बिना।

उदाहरण: - mysql> @a: = 1;

  1. 'SELECT' कथन का उपयोग करके।

उदाहरण: - mysql> @a में 1 का चयन करें;

यहां @ ए उपयोगकर्ता परिभाषित चर है और 1 को @ ए में असाइन किया जा रहा है।

अब @ {variable_name} के मान को कैसे प्राप्त करें या चुनें।

हम जैसे

उदाहरण का चयन करें कथन का उपयोग कर सकते हैं: -

mysql> का चयन @a;

यह आउटपुट दिखाएगा और @ ए के मूल्य दिखाएगा।

अब एक चर में किसी तालिका से मान असाइन कैसे करें।

इसके लिए हमें दो कथन का उपयोग कर सकते हैं की तरह: -

  1. @a: = (कर्मचारी से emp_name का चयन करें जहां emp_id = 1);

  2. कर्मचारी से @a में emp_name का चयन करें जहां emp_id = 1;

हमेशा होना सावधान emp_name अन्यथा एकल मान लौटाना चाहिए यह आप इस प्रकार के बयानों में एक त्रुटि फेंक देते हैं।

इस संदर्भ लें: - http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql

संबंधित मुद्दे