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

MySQL में GROUP BY MAX() का उपयोग करके DISTINCT मानों को ID के अवरोही क्रम में चुनना

MySQL में GROUP BY और ORDER BY MAX() का उपयोग करके विशिष्ट मान चुनें और उन्हें अधिकतम ID के अवरोही क्रम में क्रमबद्ध करें।

उदाहरण: टेबल बनाना और डुप्लिकेट डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.81 sec)
mysql> INSERT INTO DemoTable VALUES
    -> (10, 'John'), (10, 'John'), (20, 'Sam'), (20, 'Sam'), (30, 'David'), (30, 'David');

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

mysql> SELECT * FROM DemoTable;

आउटपुट

+------+-------+
| Id   | Name  |
+------+-------+
| 10   | John  |
| 10   | John  |
| 20   | Sam   |
| 20   | Sam   |
| 30   | David |
| 30   | David |
+------+-------+
6 rows in set (0.00 sec)

विशिष्ट नाम, अधिकतम ID के अवरोही क्रम में, शीर्ष 2

mysql> SELECT Name FROM DemoTable
    -> GROUP BY Name
    -> ORDER BY MAX(Id) DESC
    -> LIMIT 2;

आउटपुट

+-------+
| Name  |
+-------+
| David |
| Sam   |
+-------+
2 rows in set (0.06 sec)

व्याख्या:

  • GROUP BY Name - प्रत्येक नाम के लिए एक पंक्ति
  • MAX(Id) - प्रत्येक नाम समूह में अधिकतम ID (30=David, 20=Sam, 10=John)
  • ORDER BY MAX(Id) DESC - अधिकतम ID के घटते क्रम में (David पहले)
  • LIMIT 2 - शीर्ष 2

उपयोग का मामला: प्रत्येक उपयोगकर्ता का नवीनतम पोस्ट प्राप्त करना, प्रत्येक श्रेणी का नवीनतम उत्पाद, आदि।

MySQL 8.0+ विंडो फ़ंक्शन विकल्प (अधिक लचीला):

SELECT Name FROM (
    SELECT Name, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Id DESC) AS rn
    FROM DemoTable
) t WHERE rn = 1
ORDER BY Id DESC LIMIT 2;

यह प्रत्येक नाम की नवीनतम पंक्ति (पूर्ण पंक्ति डेटा के साथ) देता है, फिर क्रमबद्ध करता है।

  1. - MySQL में GROUP_CONCAT DISTINCT का उपयोग करके ID के अनुसार विशिष्ट नाम जोड़ना

    MySQL में सबक्वेरी में DISTINCT और GROUP_CONCAT के साथ ID द्वारा विशिष्ट नाम संयोजित करना GROUP_CONCAT() के साथ DISTINCT का उपयोग करने के लिए, पहले सबक्वेरी में DISTINCT लागू करें, फिर बाहरी क्वेरी में GROUP_CONCAT() करें। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable ( Id INT, Na

  1. - MySQL में शर्त के साथ ORDER BY और SELECT कैसे करें?

    कंडीशनल ORDER BY: जीरो वैल्यू अंत में किसी कॉलम को सॉर्ट करते समय खास मान (जैसे 0) को अंत में रखने और बाकी को नॉर्मल ऑर्डर में रखने के लिए बूलियन एक्सप्रेशन का उपयोग करें। सिंटैक्स SELECT * FROM yourTableName ORDER BY yourColumnName = 0, yourColumnName; टेबल बनाना और डेटा इन्सर्ट करना CREATE TABL

  1. - MySQL में DISTINCT कॉलम से औसत कैसे चुनें?

    MySQL में विशिष्ट (DISTINCT) मानों के आधार पर औसत निकालने के लिए, सबक्वेरी में DISTINCT का उपयोग करके डुप्लिकेट हटाएं, फिर बाहरी क्वेरी में AVG() लागू करें। उदाहरण: विशिष्ट छात्र-मान संयोजनों का औसत डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1934 ( StudentName VARCHAR(20), StudentMa