दिलचस्प पोस्ट
क्या तैयारस्थापना एसक्यूएल इंजेक्शन से बचता है? कैसे दो स्तंभों में एक unordered सूची प्रदर्शित करने के लिए? क्रॉस डोमेन लॉगिन – एक डोमेन से दूसरे स्थानांतरित होने पर किसी उपयोगकर्ता को स्वचालित रूप से कैसे लॉगिन किया जाए JQuery के datepicker के साथ विशिष्ट श्रेणी में दिनांक हाइलाइट करें जावास्क्रिप्ट में वैश्विक वस्तु कैसे प्राप्त करें? सूची देखें फ़िल्टर एंड्रॉइड मैं दिन-तिथि (पायथन) में कैसे परिवर्तित करूं? सी में फ़ंक्शन तर्कों के रूप में बहुआयामी arrays उत्तीर्ण करना jQuery के मान्य – छिपे हुए क्षेत्रों के लिए सत्यापन सक्षम करें कैसे PHP का उपयोग कर क्रॉन नौकरी बनाने के लिए? पायथन 3 के लिए छवि पुस्तकालय EC2 टी 2। मीडिया फोर्स्टेबल क्रेडिट "बचत" कैलक्यूएशन HTML नेस्टेड सूची बनाने का उचित तरीका है? अवरोही पदों में पोस्ट पोस्ट करें क्या मुझे एक 'if' कथन के साथ दो समान कर्नेलों को एकजुट करना चाहिए, जो प्रदर्शन हानि को खतरे में डाल रहा है?

दूसरा सबसे बड़ा मूल्य खोजने के लिए सरल एसक्यूएल क्वेरी क्या है?

एक विशिष्ट स्तंभ में दूसरा सबसे बड़ा पूर्णांक मान खोजने के लिए सबसे आसान एसक्यूएल क्वेरी क्या है?

कॉलम में शायद डुप्लिकेट मान हैं।

वेब के समाधान से एकत्रित समाधान "दूसरा सबसे बड़ा मूल्य खोजने के लिए सरल एसक्यूएल क्वेरी क्या है?"

SELECT MAX( col ) FROM table WHERE col < ( SELECT MAX( col ) FROM table ) 
 SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table); 

टी-एसक्यूएल में दो तरीके हैं:

 --filter out the max select max( col ) from [table] where col < ( select max( col ) from [table] ) --sort top two then bottom one select top 1 col from ( select top 2 col from [table] order by col) topTwo order by col desc 

माइक्रोसॉफ्ट एसक्यूएल में पहला रास्ता दूसरा के रूप में दो बार तेजी से है, भले ही प्रश्न में कॉलम क्लस्टर हो।

यह इसलिए है क्योंकि सॉर्ट ऑपरेशन तालिका या सूचकांक स्कैन के मुकाबले अपेक्षाकृत धीमा है कि max एकत्रीकरण का उपयोग करता है

वैकल्पिक रूप से, Microsoft SQL 2005 और इसके बाद के संस्करण में आप ROW_NUMBER() फ़ंक्शन का उपयोग कर सकते हैं:

 select col from ( select ROW_NUMBER() over (order by col asc) as 'rowNum', col from [table] ) withRowNum where rowNum = 2 

मैं कुछ विशिष्ट SQL सर्वर और कुछ MySQL विशिष्ट समाधानों को यहां देखता हूं, इसलिए आप यह जान सकते हैं कि आपको किस डेटाबेस की जरूरत है हालांकि अगर मुझे लगता है कि मैं SQL सर्वर कहूँगा क्योंकि यह MySQL में तुच्छ है

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

SQL सर्वर (पूर्व-2012):

 SELECT MIN([column]) AS [column] FROM ( SELECT TOP 2 [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESC ) a 

माई एसक्यूएल:

 SELECT `column` FROM `table` GROUP BY `column` ORDER BY `column` DESC LIMIT 1,1 

अद्यतन करें:

SQL सर्वर 2012 अब बहुत क्लीनर (और मानक ) OFFSET / FETCH सिंटैक्स का समर्थन करता है:

 SELECT TOP 2 [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESC OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY; 

मुझे लगता है कि आप ऐसा कुछ कर सकते हैं:

 SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT 1 OFFSET 1 

या

 SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT (1, 1) 

आपके डेटाबेस सर्वर पर निर्भर करता है संकेत: SQL सर्वर LIMIT नहीं करता है।

आवेदन में निर्धारित इस परिणाम से दूसरा मूल्य प्राप्त करना सबसे आसान होगा:

 SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2 

लेकिन अगर आपको एसक्यूएल का उपयोग करके दूसरा मान चुनना होगा, तो कैसे:

 SELECT MIN(value) FROM (SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2) AS t 

आप निम्न क्वेरी का उपयोग कर कॉलम का दूसरा सबसे बड़ा मान पा सकते हैं

 SELECT * FROM TableName a WHERE 2 = (SELECT count(DISTINCT(b.ColumnName)) FROM TableName b WHERE a.ColumnName <= b.ColumnName); 

आप निम्न लिंक पर अधिक जानकारी पा सकते हैं

http://www.abhishekbpatel.com/2012/12/how-to-get-nth-maximum-and-minimun.html

दूसरा सबसे बड़ा मूल्य खोजने के लिए एक बहुत ही सरल क्वेरी

 SELECT `Column` FROM `Table` ORDER BY `Column` DESC LIMIT 1,1; 
 SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee ) 

यह प्रश्न परिणाम से अधिकतम वेतन वापस देगा – जिसमें समग्र तालिका से अधिकतम वेतन नहीं है।

 select * from (select ROW_NUMBER() over (Order by Col_x desc) as Row, Col_1 from table_1)as table_new tn inner join table_1 t1 on tn.col_1 = t1.col_1 where row = 2 

आशा है कि किसी भी पंक्ति के लिए मूल्य प्राप्त करने के लिए यह सहायता …

सभी के सरलतम

 select sal from salary order by sal desc limit 1 offset 1 

पुराने प्रश्न जो मुझे पता है, लेकिन इससे मुझे एक बेहतर योजना दी गई है:

  SELECT TOP 1 LEAD(MAX (column)) OVER (ORDER BY column desc) FROM TABLE GROUP BY column 
 select min(sal) from emp where sal in (select TOP 2 (sal) from emp order by sal desc) 

ध्यान दें

सैल कॉल का नाम है
emp टेबल नाम है

टॉम, मान लें कि जब यह select max([COLUMN_NAME]) from [TABLE_NAME] सेक्शन select max([COLUMN_NAME]) from [TABLE_NAME] में एक से अधिक मान select max([COLUMN_NAME]) from [TABLE_NAME] यह विफल हो जाएगा यानी जहां डेटा सेट में 2 से अधिक मान हैं

आपकी क्वेरी में थोड़ा बदलाव काम करेगा –

 select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] **IN** ( select max([COLUMN_NAME]) from [TABLE_NAME] ) 
 select max(COL_NAME) from TABLE_NAME where COL_NAME in (select COL_NAME from TABLE_NAME where COL_NAME < (select max(COL_NAME) from TABLE_NAME)); 

सबक्व्यरी सबसे बड़े के अलावा अन्य सभी मूल्यों का लाभ देता है लौटा दी गई सूची से अधिकतम मूल्य चुनें

 select col_name from ( select dense_rank() over (order by col_name desc) as 'rank', col_name from table_name ) withrank where rank = 2 
 SELECT * FROM table WHERE column < (SELECT max(columnq) FROM table) ORDER BY column DESC LIMIT 1 

यह सबसे ज्यादा खास तरीका है:

 SELECT Column name FROM Table name ORDER BY Column name DESC LIMIT 1,1 

जैसा कि आप डुप्लिकेट मूल्यों का उल्लेख करते हैं ऐसे मामले में आप दूसरे उच्चतम मूल्य को खोजने के लिए अलग और ग्रुप द्वारा उपयोग कर सकते हैं

यहाँ एक मेज है

वेतन

:

यहां छवि विवरण दर्ज करें

समूह द्वारा

 SELECT amount FROM salary GROUP by amount ORDER BY amount DESC LIMIT 1 , 1 

DISTINCT

 SELECT DISTINCT amount FROM salary ORDER BY amount DESC LIMIT 1 , 1 

LIMIT का पहला भाग = प्रारंभ सूचकांक

LIMIT का दूसरा भाग = कितने मूल्य

कुछ इस तरह? मैंने इसे परीक्षण नहीं किया है, यद्यपि:

 select top 1 x from ( select top 2 distinct x from y order by x desc ) z order by x 

एक SQL डेटाबेस तालिका में nth पंक्ति का चयन कैसे करें? ।

Sybase SQL कहीं भी समर्थन करता है:

 SELECT TOP 1 START AT 2 value from table ORDER BY value 

एक सहसंबद्ध क्वेरी का उपयोग करना:

 Select * from x x1 where 1 = (select count(*) from x where x1.a < a) 
 select * from emp e where 3>=(select count(distinct salary) from emp where s.salary<=salary) 

यह क्वेरी अधिकतम तीन वेतन का चयन करता है। यदि दो ईएमपी को एक ही वेतन मिलता है तो यह क्वेरी को प्रभावित नहीं करता है।

 select top 1 MyIntColumn from MyTable where MyIntColumn <> (select top 1 MyIntColumn from MyTable order by MyIntColumn desc) order by MyIntColumn desc 

यह एमएस एसक्यूएल में काम करता है:

 select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] < ( select max([COLUMN_NAME]) from [TABLE_NAME] ) 

एक पंक्ति में 2 सबसे उच्चतम संख्या को खोजने के लिए प्रश्न-

 select Top 1 (salary) from XYZ where Salary not in (select distinct TOP 1(salary) from XYZ order by Salary desc) ORDER BY Salary DESC 

हाइलाइट किए गए Top 1 से TOP 2 , 3 या 4 यू को क्रमशः तीसरे, चौथे और पांचवीं सबसे ऊंचे स्थान पर बदल सकते हैं।

हम निम्नानुसार क्रम और शीर्ष 1 तत्व का उपयोग भी कर सकते हैं:

 Select top 1 col_name from table_name where col_name < (Select top 1 col_name from table_name order by col_name desc) order by col_name desc 
 SELECT * FROM EMP WHERE salary= (SELECT MAX(salary) FROM EMP WHERE salary != (SELECT MAX(salary) FROM EMP) ); 

यह कॉलम के दूसरे सबसे बड़े मूल्य को खोजने का एक और तरीका है। तालिका 'छात्र' और स्तंभ 'आयु' पर विचार करें। फिर सवाल है,

 select top 1 Age from Student where Age in(select distinct top 2 Age from Student order by Age desc) order by Age asc 

प्रयत्न:

 select a.* ,b.* from (select * from (select ROW_NUMBER() OVER(ORDER BY fc_amount desc) SrNo1, fc_amount as amount1 From entry group by fc_amount) tbl where tbl.SrNo1 = 2) a , (select * from (select ROW_NUMBER() OVER(ORDER BY fc_amount asc) SrNo2, fc_amount as amount2 From entry group by fc_amount) tbl where tbl.SrNo2 =2) b