Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में GREATEST फ़ंक्शन का उपयोग करके दो कॉलम्स में से अधिकतम मान खोजें (NULL मानों के साथ)

MySQL में NULL मानों को संभालते हुए GREATEST() का उपयोग

MySQL का GREATEST() फ़ंक्शन दो या अधिक अभिव्यक्तियों में से सबसे बड़ा मान लौटाता है। हालांकि, यदि कोई तर्क NULL है, तो परिणाम NULL होता है। NULL मानों को संभालने के लिए IF() या COALESCE() का उपयोग करें।

टेबल बनाना

mysql> CREATE TABLE DemoTable (
    -> Value1 INT,
    -> Value2 INT
    -> );
Query OK, 0 rows affected (0.77 sec)

NULL मानों सहित डेटा डालना

mysql> INSERT INTO DemoTable VALUES (78, 89);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES (19, NULL);
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES (NULL, 0);
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable VALUES (NULL, 95);
Query OK, 1 row affected (0.15 sec)

सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable;
+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     78 |     89 |
|     19 |   NULL |
|   NULL |      0 |
|   NULL |     95 |
+--------+--------+
4 rows in set (0.00 sec)

NULL को 0 मानकर GREATEST खोजने का क्वेरी

mysql> SELECT GREATEST(
    ->     IF(Value1 IS NULL, 0, Value1),
    ->     IF(Value2 IS NULL, 0, Value2)
    -> ) FROM DemoTable;

परिणाम

+-------------------------------------------------------------------+
| greatest(if(Value1 is null,0,Value1),if(Value2 is null,0,Value2)) |
+-------------------------------------------------------------------+
|                                                                89 |
|                                                                19 |
|                                                                 0 |
|                                                                95 |
+-------------------------------------------------------------------+
4 rows in set (0.00 sec)

बेहतर विकल्प: COALESCE()

SELECT GREATEST(
    COALESCE(Value1, 0),
    COALESCE(Value2, 0)
) FROM DemoTable;

COALESCE() पहला गैर-NULL मान लौटाता है, जो अधिक संक्षिप्त और मानक SQL है।

पंक्ति-दर-पंक्ति व्याख्या

Value1Value2COALESCE(Value1,0)COALESCE(Value2,0)GREATEST
7889788989
19NULL19019
NULL0000
NULL9509595

GREATEST vs LEAST

-- अधिकतम के लिए
SELECT GREATEST(COALESCE(Value1,0), COALESCE(Value2,0)) FROM DemoTable;

-- न्यूनतम के लिए (NULL को बड़े मान के रूप में मानते हुए)
SELECT LEAST(
    COALESCE(Value1, 999999),
    COALESCE(Value2, 999999)
) FROM DemoTable;

NULL को अलग तरीके से संभालना

यदि आप चाहते हैं कि NULL को "मान नहीं" माना जाए और केवल गैर-NULL मानों की तुलना की जाए:

SELECT 
    CASE 
        WHEN Value1 IS NULL AND Value2 IS NULL THEN NULL
        WHEN Value1 IS NULL THEN Value2
        WHEN Value2 IS NULL THEN Value1
        ELSE GREATEST(Value1, Value2)
    END AS MaxValue
FROM DemoTable;

संबंधित फ़ंक्शन

  • LEAST(): न्यूनतम मान लौटाता है (NULL होने पर NULL लौटाता है)
  • COALESCE(): पहला गैर-NULL मान लौटाता है
  • IFNULL(): MySQL-विशिष्ट, दो तर्कों के लिए COALESCE के समान
  • NULLIF(): यदि दो मान समान हैं तो NULL लौटाता है
  1. - MySQL में UNION का उपयोग करके तीन कॉलम्स से विशिष्ट मानों को एक कॉलम में संयोजित करें

    MySQL में UNION का उपयोग करके कई कॉलम्स को एक कॉलम में संयोजित करना जब आपको एक ही टेबल के कई कॉलम्स से विशिष्ट (DISTINCT) मानों को एक ही परिणाम कॉलम में संयोजित करने की आवश्यकता होती है, तो UNION (या UNION ALL) का उपयोग करें। टेबल बनाना ); Query OK, 0 rows affected (0.69 sec) डेटा डालना (NULL मान

  1. - MySQL में NULL और NOT NULL रिकॉर्ड वाले कॉलम से केवल NOT NULL मान प्रदर्शित करें

    इसके लिए आप IS NOT NULL प्रॉपर्टी का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1 values(2019-09-10); Query OK, 1 r

  1. - MySQL में GREATEST() से किसी भी कॉलम में NULL वाली पंक्तियाँ खोजें

    GREATEST() फ़ंक्शन अपने तर्कों में से सबसे बड़ा मान लौटाता है। यदि कोई भी तर्क NULL है, तो परिणाम NULL होता है। इस गुण का उपयोग करके किसी भी कॉलम में NULL वाली पंक्तियाँ खोज सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1862 ( Value1 INT, Value2 INT, Value3 INT, Value4 INT ); डेटा डालें