MySQL में अधिकतम दो मान कैसे प्राप्त करें?


290

मैंने कोशिश की लेकिन असफल रहा:

mysql> select max(1,0);
त्रुटि 1064 (42000): आपके SQL सिंटैक्स में कोई त्रुटि है; मैनुअल की जाँच करें
उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से मेल खाती है 
लाइन 1 पर '0)' के पास

जवाबों:


528

GREATEST () का उपयोग करें

उदाहरण के लिए:

SELECT GREATEST(2,1);

नोट: जब भी उस समय कोई भी मान शून्य होता है, तो यह फ़ंक्शन हमेशा शून्य हो जाता है (उपयोगकर्ता @ sanghavi7 के लिए धन्यवाद)


41
एक बात ध्यान में रखने की जरूरत है कि जब भी उस समय किसी भी मूल्य में शून्य होता है, तो यह फ़ंक्शन हमेशा उत्तर के रूप में अशक्त होता है!
सांगवी

33
वहाँ भी हैLEAST
bobobobo

1
मैं एक उप क्वेरी को एक पैरामीटर के रूप में कैसे चला सकता हूं GREATESTताकि मैं एक स्तंभ स्तंभ के लिए मान प्राप्त कर सकूं
जुनैद कादिर

17
अशक्त के साथ समस्या को रोकने के लिए आप ifnull का उपयोग कर सकते हैं। जैसे select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;आपको date1 मिलेगा।
बजे क्रिस्टोफ ग्रिमर-डिट्रिच

1
अगर कुछ मान शून्य हो सकते हैं, तो आप कर सकते हैंGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
सीन बीन

27

पंक्तियों के समूह में एक स्तंभ का अधिकतम मूल्य प्राप्त करने के लिए:

SELECT MAX(column1) FROM table; -- expect one result

प्रत्येक पंक्ति के लिए कॉलम, शाब्दिक, या चर का एक सेट का अधिकतम मूल्य प्राप्त करने के लिए:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results

3
के साथ अशक्त मूल्यों के लिए बाहर देखो GREATEST। कोई भी अशक्त मान फ़ंक्शन को अशक्त करने का कारण होगा। इसे रोकने के लिए, आप कर सकते हैंGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
सीन बीन

5

आप नॉटेबल फील्ड के साथ GREATEST फ़ंक्शन का उपयोग कर सकते हैं । यदि इस में से एक मान (या दोनों) NULL हो सकता है, तो इसका उपयोग न करें (परिणाम NULL हो सकता है)।

select 
    if(
        fieldA is NULL, 
        if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
        if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
    ) as maxValue

आप NULL को अपने पसंदीदा डिफ़ॉल्ट मान में बदल सकते हैं (यदि दोनों मान NULL हैं)।


1
यही कारण है कि मैं ईमानदारी से MySQL से नफरत करता हूं। इतनी साधारण सी बात को करने के लिए कितनी जबरदस्त मेहनत करनी पड़ती है।
मोनिका हेडडेक

9
यह बस के साथ प्रतिस्थापित किया जा सकता है select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue। यह
अधूरा है

1
यदि कुछ मान शून्य हो सकते हैं, तो आप कर सकते हैंGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
सीन बीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.