MAX() और GROUP BY से एक कॉलम के विशिष्ट मान
MySQL में जब एक कॉलम के मान डुप्लीकेट हों और दूसरे कॉलम के अलग-अलग हों, तो किसी एक कॉलम के विशिष्ट मान पाने के लिए MAX() (या MIN()) के साथ GROUP BY का उपयोग करें।
उदाहरण स्थिति
टेबल बनाएं:
mysql> CREATE TABLE distinctFromOneColumn (
-> StudentId INT,
-> StudentName VARCHAR(100)
-> );
डेटा इन्सर्ट करें (StudentId 1001 के तीन अलग नाम हैं):
mysql> INSERT INTO distinctFromOneColumn VALUES(1001, 'John'); mysql> INSERT INTO distinctFromOneColumn VALUES(1002, 'Carol'); mysql> INSERT INTO distinctFromOneColumn VALUES(1001, 'Sam'); mysql> INSERT INTO distinctFromOneColumn VALUES(1001, 'David'); mysql> INSERT INTO distinctFromOneColumn VALUES(1002, 'Ramit'); mysql> INSERT INTO distinctFromOneColumn VALUES(1003, 'Bob');
सभी रिकॉर्ड:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1001 | John | | 1002 | Carol | | 1001 | Sam | | 1001 | David | | 1002 | Ramit | | 1003 | Bob | +-----------+-------------+
प्रति StudentId एक नाम चुनने की क्वेरी
mysql> SELECT StudentId, MAX(StudentName) AS StudentName
-> FROM distinctFromOneColumn
-> GROUP BY StudentId;
परिणाम:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1001 | Sam | | 1002 | Ramit | | 1003 | Bob | +-----------+-------------+
व्याख्या:
GROUP BY StudentId- प्रत्येक StudentId के लिए एक पंक्ति बनाता हैMAX(StudentName)- वर्णानुक्रम में सबसे बड़ा नाम चुनता है (Sam > John > David)MIN(StudentName)उपयोग करके सबसे छोटा नाम पा सकते हैं
ध्यान दें: यह तरीका तभी उपयोगी है जब आपको किसी भी एक मान से काम चल जाए। यदि विशिष्ट नियम से चुनना हो (जैसे नवीनतम रिकॉर्ड), तो अन्य तरीके अपनाएं।