কম্পিউটার টিউটোরিয়াল

MySQL-এ ORDER BY এবং LIMIT ব্যবহার করে নির্দিষ্ট ইউজারের লগইন টাইম আপডেট করা

MySQL-এ একই ইউজারের একাধিক রো থাকলে নির্দিষ্ট ইউজারের লেটেস্ট (সর্বশেষ) রো আপডেট করতে ORDER BY ... DESC LIMIT 1 প্যাটার্ন ব্যবহার করা হয়।

টেবিল ও ডেটা

mysql> create table DemoTable1911 ( UserId int, UserLoggedInTime time, UserName varchar(20) );
mysql> insert into DemoTable1911 values(100,'7:32:00','Chris'),(101,'5:00:00','David'),(102,'6:10:20','Mike'),(103,'3:55:00','Carol');

সব রেকর্ড

mysql> select * from DemoTable1911;
+--------+------------------+----------+
| UserId | UserLoggedInTime | UserName |
+--------+------------------+----------+
| 100    | 07:32:00         | Chris    |
| 101    | 05:00:00         | David    |
| 102    | 06:10:20         | Mike     |
| 103    | 03:55:00         | Carol    |
+--------+------------------+----------+

Carol-এর লগইন টাইম আপডেট (লেটেস্ট রো টার্গেট)

mysql> update DemoTable1911
    -> set UserLoggedInTime='12:30:45'
    -> where UserName='Carol'
    -> order by UserId DESC
    -> Limit 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

আপডেটের পর ডেটা

mysql> select * from DemoTable1911;
+--------+------------------+----------+
| UserId | UserLoggedInTime | UserName |
+--------+------------------+----------+
| 100    | 07:32:00         | Chris    |
| 101    | 05:00:00         | David    |
| 102    | 06:10:20         | Mike     |
| 103    | 12:30:45         | Carol    |
+--------+------------------+----------+

ব্যাখ্যা: WHERE UserName='Carol' শর্তে একাধিক রো থাকলে ORDER BY UserId DESC LIMIT 1 দিয়ে সর্বোচ্চ UserId-বালা (লেটেস্ট) রোটি আপডেট হয়। এটি রেস কন্ডিশন এড়াতে এবং সঠিক রো আপডেট নিশ্চিত করতে সাহায্য করে।

  1. MySQL-এ ভিন্ন ইউজার হিসেবে লগইন করা (mysql -u -p কমান্ড)

  2. MySQL-এ STR_TO_DATE দিয়ে স্ট্রিংকে টাইমSTAMP-এ রূপান্তর

  3. MySQL টেবিলে নির্দিষ্ট স্ট্রিং অনুসন্ধান

  4. MySQL에서 일괄 업데이트(Batch Update) 수행하기