मुझे दो क्षेत्रों से सबसे बड़ा मूल्य प्राप्त करने की आवश्यकता है:
SELECT MAX(field1), MAX(field2)
अब, मैं इन दोनों से सबसे बड़ा मूल्य कैसे प्राप्त कर सकता हूं?
जवाबों:
आप GREATEST()फ़ंक्शन का उपयोग करना चाहते हैं :
SELECT GREATEST(field1, field2);
यदि आप सभी पंक्तियों में से अधिकतम प्राप्त करना चाहते हैं, तो आप निम्नलिखित का उपयोग कर सकते हैं:
SELECT GREATEST(MAX(field1), MAX(field2));
उदाहरण 1:
SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
| 2 |
+----------------+
1 row in set (0.00 sec)
उदाहरण 2:
CREATE TABLE a (a int, b int);
INSERT INTO a VALUES (1, 1);
INSERT INTO a VALUES (2, 1);
INSERT INTO a VALUES (3, 1);
INSERT INTO a VALUES (1, 2);
INSERT INTO a VALUES (1, 4);
SELECT GREATEST(MAX(a), MAX(b)) FROM a;
+--------------------------+
| GREATEST(MAX(a), MAX(b)) |
+--------------------------+
| 4 |
+--------------------------+
1 row in set (0.02 sec)
GREATEST(MAX(field1), MAX(field2))काम कर रहा है। गलत गलत नंबर लौटाया जाता है (सबसे बड़ा नहीं)
SELECT GREATEST(MAX(field1), MAX(field2));सभी पंक्तियों से पूर्ण अधिकतम प्राप्त करने की आवश्यकता होगी । यदि आप उपयोग करते SELECT GREATEST(field1, field2);हैं तो आपको प्रत्येक पंक्ति के लिए फ़ील्ड 1 और फ़ील्ड 2 के बीच अधिकतम के साथ एक परिणाम-सेट मिलेगा।
यदि आप प्रत्येक पंक्ति के लिए GREATEST () का चयन कर रहे हैं
SELECT GREATEST(field1, field2)
यदि फ़ील्ड में से एक NULL है तो यह NULL को लौटा देगा । आप इसे हल करने के लिए IFNULL का उपयोग कर सकते हैं
SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
IFNULLतब भी करते हैं जब आपके पास तुलना करने के लिए दो दर्जन फ़ील्ड होते हैं!
SELECT max( CASE
WHEN field1 > field2 THEN field1
ELSE field2
END ) as biggestvalue
FROM YourTable;
MIN / MAX के साथ GREATEST / LEAST का उपयोग
GREATEST / LEAST : स्तंभों के साथ उपयोग किया जाता है, जब आप विभिन्न स्तंभों से अधिकतम या न्यूनतम मान प्राप्त करना चाहते हैं।
न्यूनतम / अधिकतम : पंक्तियों के साथ उपयोग किया जाता है, जब आप विभिन्न पंक्तियों से अधिकतम या न्यूनतम मान प्राप्त करना चाहते हैं:
उदाहरण तालिका:
SELECT GREATEST(col_a, col_b, col_c) FROM temp;
SELECT MIN(GREATEST(col_a, col_b, col_c)) FROM temp; # 3 as output
SELECT MAX(GREATEST(col_a, col_b, col_c)) FROM temp; # 9 as output
SELECT LEAST(col_a, col_b, col_c) FROM temp;
SELECT MIN(LEAST(col_a, col_b, col_c)) FROM temp; # 1 as output
SELECT MAX(LEAST(col_a, col_b, col_c)) FROM temp; # 7 as output
GREATEST()सबसेLEAST()छोटे के लिए सबसे बड़ी इसी तरह के लिए।