मेरे पास एक उत्पाद तालिका है जहां प्रत्येक उत्पाद का रंग होता है। मुझे प्रत्येक रंग के लिए न्यूनतम उत्पाद मूल्य वापस करने की आवश्यकता है।

SELECT MIN(price) FROM 'mytable' WHERE color="red"

लाल रंग के सभी उत्पादों के लिए न्यूनतम मूल्य लौटाएगा। और मुझे एक ही पंक्ति वापस मिल जाती है।

मुझे क्या करना है प्रत्येक विशिष्ट रंग के लिए न्यूनतम मूल्य के साथ कई पंक्तियों को वापस करना है।

लेकिन मुझे नहीं पता कि किसी खोज के परिणामों को "WHERE" में कैसे फीड किया जाए और कई पंक्तियाँ प्राप्त की जाएँ।

मैंने कोशिश की

SELECT MIN(price) FROM 'mytable' WHERE color=(SELECT DISTINCT color FROM 'mytable')

लेकिन मुझे त्रुटि मिलती है। मेरी सभी खोजें उप प्रश्नों को इंगित करती हैं, लेकिन मैं यह नहीं समझ सकता कि उप क्वेरी परिणामों को किसी क्वेरी में कैसे फ़ीड करें और एकाधिक पंक्तियों को वापस कैसे प्राप्त करें।

-1
dnavarrojr 24 पद 2017, 23:39

3 जवाब

सबसे बढ़िया उत्तर

आप GROUP BY कार्यक्षमता का उपयोग कर सकते हैं:

SELECT color, MIN(price) FROM 'mytable' GROUP BY color;

यह आपको आपके डेटा में प्रत्येक रंग के लिए न्यूनतम मूल्य देगा।

3
Vash 24 पद 2017, 23:41

क्या ये वही है जो तुम चाहते हो?

select t.*
from mytable t
where t.price = (select min(t2.price) from mytable t2 where t2.color = 'red');

या, रुकिए, मुझे लगता है कि आप प्रत्येक रंग के लिए न्यूनतम मूल्य चाहते हैं। दुह। उसके लिए एक सहसंबद्ध उपश्रेणी का उपयोग करें:

select t.*
from mytable t
where t.price = (select min(t2.price) from mytable t2 where t2.color = t.color);

यदि आप केवल न्यूनतम मूल्य चाहते हैं, तो एकत्रीकरण ठीक है:

select color, min(price)
from mytable t
group by color;

आपकी क्वेरी के सूत्रीकरण ने (मुझे) सुझाव दिया कि आप अन्य कॉलम भी चाहते हैं।

0
Gordon Linoff 24 पद 2017, 23:46
SELECT color , MIN(price ) FROM 'mytable' GROUP BY color;

Mysql doc में ग्रुप बाय के बारे में और पढ़ें। https://dev.mysql.com/doc/ refman/5.7/hi/group-by-functions.html

क्वेरी सभी रंग मान और प्रत्येक से न्यूनतम (कीमत) लौटाती है।

0
Alexey Yakovlev 25 पद 2017, 00:56