Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में प्रत्येक समूह में अंतिम रिकॉर्ड कैसे प्राप्त करें

कभी-कभी आपको सबसे हाल के रिकॉर्ड का चयन करने या प्रत्येक तिथि, उपयोगकर्ता, आईडी या किसी अन्य समूह के लिए नवीनतम रिकॉर्ड प्राप्त करने की आवश्यकता हो सकती है। MySQL में प्रत्येक समूह में अंतिम रिकॉर्ड प्राप्त करने के लिए यहां SQL क्वेरी है, क्योंकि इसके लिए कोई अंतर्निहित फ़ंक्शन नहीं है। आप इसका उपयोग PostgreSQL, SQL Server और Oracle में प्रत्येक समूह के लिए अंतिम पंक्ति का चयन करने के लिए भी कर सकते हैं।

MySQL में प्रत्येक समूह में अंतिम रिकॉर्ड कैसे प्राप्त करें

MySQL में प्रत्येक समूह में अंतिम रिकॉर्ड प्राप्त करने के चरण यहां दिए गए हैं।

मान लें कि आपके पास एक टेबल है product_sales(product, order_date,sale) जिसमें कई उत्पादों का बिक्री डेटा शामिल है।

mysql> create table product_sales(product varchar(255),order_date date, sale int);

mysql> insert into product_sales(product,order_date, sale)
     values('A','2020-05-01',250),
     ('B','2020-05-01',350),
     ('C','2020-05-01',1250),
     ('A','2020-05-02',450),
     ('B','2020-05-02',650),
     ('C','2020-05-02',1050),
     ('A','2020-05-03',150),
     ('B','2020-05-03',250),
     ('C','2020-05-03',1850);

mysql> select * from product_sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-05-01 |  250 |
| B       | 2020-05-01 |  350 |
| C       | 2020-05-01 | 1250 |
| A       | 2020-05-02 |  450 |
| B       | 2020-05-02 |  650 |
| C       | 2020-05-02 | 1050 |
| A       | 2020-05-03 |  150 |
| B       | 2020-05-03 |  250 |
| C       | 2020-05-03 | 1850 |
+---------+------------+------+

बोनस पढ़ें :MySQL में अधिकतम मूल्य के साथ रिकॉर्ड कैसे प्राप्त करें

मान लीजिए कि आप प्रत्येक समूह में, यानी प्रत्येक उत्पाद के लिए अंतिम रिकॉर्ड प्राप्त करना चाहते हैं। सबसे पहले हम प्रत्येक समूह के लिए नवीनतम दिनांक प्राप्त करने के लिए GROUP BY का उपयोग करते हैं।

mysql> select product,max(order_date) from product_sales group by product;
+---------+-----------------+
| product | max(order_date) |
+---------+-----------------+
| A       | 2020-05-03      |
| B       | 2020-05-03      |
| C       | 2020-05-03      |
+---------+-----------------+

अब जब हम प्रत्येक समूह के लिए सबसे हाल की तारीख जानते हैं, तो हम इस परिणाम को अपनी मूल तालिका के साथ जोड़ते हैं ताकि तारीख समूह द्वारा नवीनतम रिकॉर्ड प्राप्त किया जा सके।

mysql> select product_sales.* from product_sales,
           (select product,max(order_date) as order_date
                from product_sales
                group by product) max_sales
             where product_sales.product=max_sales.product
             and product_sales.order_date=max_sales.order_date;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-05-03 |  150 |
| B       | 2020-05-03 |  250 |
| C       | 2020-05-03 | 1850 |
+---------+------------+------+

बोनस पढ़ें :MySQL में व्यू कैसे बनाएं

हर उपयोगकर्ता के लिए नवीनतम रिकॉर्ड का चयन कैसे करें

इसी तरह, आप प्रत्येक उपयोगकर्ता के लिए नवीनतम रिकॉर्ड का चयन कर सकते हैं या प्रत्येक आईडी के लिए नवीनतम रिकॉर्ड प्राप्त कर सकते हैं। मान लें कि आपके पास निम्न तालिका है user_data(user_id,transaction_date,sale) उपयोगकर्ता लेन-देन डेटा के साथ

mysql> create table user_data(user_id int, transaction_date date, sale int);

mysql> insert into user_data(user_id,transaction_date, sale)
          values('1','2020-05-01',25),
          ('2','2020-05-01',35),
          ('3','2020-05-01',125),
          ('1','2020-05-02',40),
          ('2','2020-05-02',50),
          ('3','2020-05-02',50),
          ('1','2020-05-03',15),
          ('2','2020-05-03',25),
          ('3','2020-05-03',50);


mysql> select * from user_data;
+---------+------------------+------+
| user_id | transaction_date | sale |
+---------+------------------+------+
|       1 | 2020-05-01       |   25 |
|       2 | 2020-05-01       |   35 |
|       3 | 2020-05-01       |  125 |
|       1 | 2020-05-02       |   40 |
|       2 | 2020-05-02       |   50 |
|       3 | 2020-05-02       |   50 |
|       1 | 2020-05-03       |   15 |
|       2 | 2020-05-03       |   25 |
|       3 | 2020-05-03       |   50 |
+---------+------------------+------+

बोनस पढ़ें :MySQL में प्रतिदिन नए उपयोगकर्ता कैसे प्राप्त करें

सबसे पहले, हम GROUP BY का उपयोग करके प्रत्येक उपयोगकर्ता आईडी के लिए नवीनतम तिथि प्राप्त करते हैं।

mysql> select user_id,max(transaction_date) from user_data group by user_id;
+---------+-----------------------+
| user_id | max(transaction_date) |
+---------+-----------------------+
|       1 | 2020-05-03            |
|       2 | 2020-05-03            |
|       3 | 2020-05-03            |
+---------+-----------------------+

अब जब हम प्रत्येक उपयोगकर्ता आईडी के लिए सबसे हाल की तारीख जानते हैं, तो हम उपयोगकर्ता समूह द्वारा नवीनतम रिकॉर्ड प्राप्त करने के लिए इस परिणाम को अपनी मूल तालिका के साथ जोड़ते हैं।

mysql> select user_data.* from user_data,
                (select user_id,max(transaction_date) as transaction_date
                     from user_data
                     group by user_id) max_user
                  where user_data.user_id=max_user.user_id
                  and user_data.transaction_date=max_user.transaction_date;
+---------+------------------+------+
| user_id | transaction_date | sale |
+---------+------------------+------+
|       1 | 2020-05-03       |   15 |
|       2 | 2020-05-03       |   25 |
|       3 | 2020-05-03       |   50 |
+---------+------------------+------+

उम्मीद है, आप MySQL में प्रत्येक समूह में अंतिम रिकॉर्ड प्राप्त कर सकते हैं

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ABS () फ़ंक्शन - किसी संख्या का निरपेक्ष मान लौटाएं

  2. पूरे डेटाबेस में CHARACTER SET (और COLLATION) कैसे बदलें?

  3. MySQL में अंतिम अद्यतन पंक्ति की आईडी कैसे प्राप्त करें?

  4. कैसे जांचें कि रेडियो बटन चेक किया गया है या jQuery में चुना गया है?

  5. MySQL विदेशी कुंजी त्रुटि 1005 त्रुटि 150 प्राथमिक कुंजी विदेशी कुंजी के रूप में