MySQL में GROUP BY के साथ प्रत्येक समूह से एक विशिष्ट पंक्ति (जैसे न्यूनतम ID वाली) चुनने के लिए सबक्वेरी में MIN() या MAX() का उपयोग करें।
उदाहरण: प्रत्येक अंक समूह से न्यूनतम StudentId वाली पंक्ति
1. टेबल बनाएं
mysql> CREATE TABLE DemoTable1572 (
-> StudentId INT,
-> StudentMarks INT,
-> StudentName VARCHAR(20)
-> );
2. डेटा डालें
mysql> INSERT INTO DemoTable1572 VALUES(1, 79, 'Sam'); mysql> INSERT INTO DemoTable1572 VALUES(2, 89, 'Chris'); mysql> INSERT INTO DemoTable1572 VALUES(3, 98, 'David'); mysql> INSERT INTO DemoTable1572 VALUES(4, 79, 'Bob'); -- समान अंक 79
3. सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable1572;
+-----------+--------------+-------------+ | StudentId | StudentMarks | StudentName | +-----------+--------------+-------------+ | 1 | 79 | Sam | | 2 | 89 | Chris | | 3 | 98 | David | | 4 | 79 | Bob | +-----------+--------------+-------------+
4. प्रत्येक अंक समूह से न्यूनतम StudentId वाली पंक्ति
mysql> SELECT * FROM DemoTable1572
-> WHERE StudentId IN (
-> SELECT MIN(StudentId) FROM DemoTable1572 GROUP BY StudentMarks
-> );
5. परिणाम
+-----------+--------------+-------------+ | StudentId | StudentMarks | StudentName | +-----------+--------------+-------------+ | 1 | 79 | Sam | | 2 | 89 | Chris | | 3 | 98 | David | +-----------+--------------+-------------+
कैसे काम करता है
- सबक्वेरी:
GROUP BY StudentMarksसे प्रत्येक अंक के लिए न्यूनतमStudentIdढूंढता है - बाहरी क्वेरी: उन ID वाली पूर्ण पंक्तियां चुनता है
अन्य विकल्प
JOIN के साथ
SELECT d1.* FROM DemoTable1572 d1
JOIN (
SELECT StudentMarks, MIN(StudentId) AS min_id
FROM DemoTable1572
GROUP BY StudentMarks
) d2 ON d1.StudentId = d2.min_id;
MySQL 8.0+: ROW_NUMBER()
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY StudentMarks ORDER BY StudentId) AS rn
FROM DemoTable1572
) t WHERE rn = 1;
किसी भी पंक्ति के लिए (MySQL विशिष्ट)
SELECT * FROM DemoTable1572 GROUP BY StudentMarks; -- चेतावनी: ONLY_FULL_GROUP_BY मोड में त्रुटि देगा
सिफारिश
MySQL 8.0+ में ROW_NUMBER() उपयोग करें - अधिक पठनीय, लचीला और मानक-अनुरूप।