MySQL GROUP BY और MAX(): समान ID वाली पंक्तियों को मर्ज करना
जब एक ही ID की कई पंक्तियों में अलग-अलग कॉलम भरे हों, तो GROUP BY Id के साथ MAX() का उपयोग करके प्रत्येक कॉलम का उच्चतम मान प्राप्त करके पंक्तियों को मर्ज कर सकते हैं।
उदाहरण: बिखरे हुए डेटा को मर्ज करें
टेबल बनाएं:
CREATE TABLE DemoTable (
Id INT,
Value1 INT, Value2 INT, Value3 INT, Value4 INT
);
INSERT INTO DemoTable (Id, Value4) VALUES (100, 30);
INSERT INTO DemoTable (Id, Value1, Value2, Value3) VALUES (100, 20, 60, 40);
INSERT INTO DemoTable (Id, Value2, Value3, Value4) VALUES (100, 90, 100, 110);
डेटा (एक ही ID 100 की 3 पंक्तियां):
+------+--------+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | Value4 | +------+--------+--------+--------+--------+ | 100 | NULL | NULL | NULL | 30 | | 100 | 20 | 60 | 40 | NULL | | 100 | NULL | 90 | 100 | 110 | +------+--------+--------+--------+--------+
मर्ज क्वेरी: प्रत्येक कॉलम का MAX लें
SELECT
Id,
MAX(Value1) AS Value1,
MAX(Value2) AS Value2,
MAX(Value3) AS Value3,
MAX(Value4) AS Value4
FROM DemoTable
GROUP BY Id;
परिणाम (एक पंक्ति, सभी उच्चतम मान):
+------+--------+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | Value4 | +------+--------+--------+--------+--------+ | 100 | 20 | 90 | 100 | 110 | +------+--------+--------+--------+--------+
यह कैसे काम करता है?
GROUP BY Id— समान ID को एक समूह में जोड़ता हैMAX(ValueN)— प्रत्येक समूह में उस कॉलम का अधिकतम मान (NULL को अनदेखा करता है)- परिणाम: प्रत्येक ID के लिए एक पंक्ति जिसमें सभी कॉलम के सर्वोत्तम मान हैं
अन्य एग्रीगेट विकल्प