IFNULL() से NULL को अलग समूह में रखना
डिफ़ॉल्ट रूप से GROUP BY सभी NULL को एक समूह में रखता है। IFNULL(col, unique_val) से प्रत्येक NULL को अलग समूह बना सकते हैं।
तालिका और डेटा
mysql> CREATE TABLE DemoTable1511 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstName VARCHAR(20)
-> );
mysql> INSERT INTO DemoTable1511(FirstName) VALUES
-> ('John'), ('Robert'), ('Mike'), ('Robert'), (NULL), (NULL), ('Mike');
क्वेरी: NULL को अलग-अलग पंक्तियों में रखना
mysql> SELECT MIN(Id) AS Id, FirstName
-> FROM DemoTable1511
-> GROUP BY FirstName, IFNULL(FirstName, Id)
-> ORDER BY Id;
परिणाम
+------+-----------+
| Id | FirstName |
+------+-----------+
| 1 | John |
| 2 | Robert |
| 3 | Mike |
| 5 | NULL |
| 6 | NULL |
+------+-----------+
व्याख्या:
IFNULL(FirstName, Id): NULL होने पर Id उपयोग करता है (प्रत्येक पंक्ति के लिए अद्वितीय)GROUP BY FirstName, IFNULL(...): गैर-NULL नाम से समूह, NULL के लिए Id से समूहMIN(Id): प्रत्येक समूह की पहली पंक्ति का Id
विकल्प: COALESCE(FirstName, CONCAT('NULL_', Id)) भी काम करता है।