आपके पास कई समाधान हैं और उनमें से एक है left join
. का उपयोग करना और आप इसकी जांच कर सकते हैं
select t1.* from test t1
left join test t2
on t1.type = t2.type and t1.price > t2.price
group by t1.variety
having count(*) <=1
order by t1.type,t1.price
तर्क एक ही टेबल के साथ लेफ्ट जॉइन करना है जहां प्रकार समान है और कीमत दूसरे की तुलना में कम है और अंत में group by
करें विविधता और फिर प्रति समूह इच्छित रिकॉर्ड की संख्या दिखाने के लिए गिनती() का उपयोग करें। ध्यान दें कि mysql में आपको उपरोक्त क्वेरी की तरह एक समूह द्वारा एक समूह रखने की स्वतंत्रता है जो अन्य RDBMS में विफल हो सकती है।
अब जैसा कि आपको alias
. के बारे में कुछ भ्रम है , उपरोक्त उदाहरण में तालिका का नाम test
. है और क्वेरी के भीतर एक छद्म नाम t1
. के रूप में दिया गया है . साथ ही जब आप स्वयं को शामिल करते हैं तो यह महत्वपूर्ण है कि आप उसी तालिका के लिए अद्वितीय उपनाम नाम दें। ऊपर के उदाहरण में एक ही टेबल खुद से जुड़ी हुई है इसलिए हमें यह सुनिश्चित करने की जरूरत है कि हम टेबल के लिए कुछ उपनाम दें।