2012-08-08 7 views
12

मैं निम्नलिखित क्षेत्रों के साथ एक छात्र की मेज है:MySQL क्वेरी ऑटो वेतन वृद्धि के साथ परिणाम के रूप में चयन करने के लिए एक नया स्तंभ परिणाम में जोड़ा

student(student_id, student_name, student_avg) 

मैं MySQL में एक प्रश्न के रूप में परिणाम प्रदर्शित करेगा लिखने की ज़रूरत :

सीरियल नंबर। => परिणाम में परिणामस्वरूप प्रत्येक पंक्ति के लिए ऑटो वृद्धि जैसे 1,2,3,...,n के रूप में सीरियल नंबर के साथ एक नया कॉलम होना चाहिए।

student_id 
student_name 
student_avg > 4 

मैं अपनी तालिका को किसी भी तरह से बदलना नहीं चाहता हूं। मुझे बस इतना करना है कि एक प्रश्न लिखें जो मुझे उपर्युक्त परिणाम देगा। मुझे आशा है कि मैं स्पष्ट हूं।

उदाहरण डेटा:

student_id   student_name  student_avg 
1     abc    2.5 
2     xyz    4.1 
3     def    4.2  

नमूना उत्पादन क्वेरी करने के बाद:

serial_no student_id student_name  student_avg 
    1    2   xyz    4.1 
    2    3   def    4.2 
+0

उर तालिका पेस्ट और बाहर नमूना कृपया डाल –

+0

student_id STUDENT_NAME student_avg 1 एबीसी 2.5 2 xyz 4.1 3 डीईएफ़ 4.2 नमूना उत्पादन serial_no student_id STUDENT_NAME student_avg 1 2 xyz 4.1 2 3 डीईएफ़ 4.2 – Aayush

उत्तर

40

पर इस प्रयास करें
SELECT @s:[email protected]+1 serial_number,student_id,student_name,student_avg 
FROM students, 
     (SELECT @s:= 0) AS s 
WHERE 
student_avg > 4; 

https://stackoverflow.com/a/11096550/1423506

+0

बहुत धन्यवाद आपने मेरा समय बचाया :) – Aayush

+1

पहले कुछ ऐसा मिला। हालांकि मेरे लिए एक समस्या है हालांकि: जब मैं इसे 'ऑर्डर बाय' के साथ जोड़ता हूं, तो वृद्धिशील संख्या को अब क्रमबद्ध नहीं किया जाता है, यह ऑर्डरिंग से पहले लागू होता है। कोई विचार? – fluxon

9
SET @serial=0; 
SELECT @serial := @serial+1 AS `serial_number`, `column_name` FROM `table_name`; 

अपने विशेष मामले में:

SET @serial=0; 

SELECT 
    @serial := @serial+1 AS `serial_number`, 
    `student_id`, 
    `student_name`, 
    `student_avg` 
FROM 
    `students` 
WHERE 
    `student_avg` > 4; 
+1

धन्यवाद बस काम करता है मेरे लिए ठीक :) – Aayush

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