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

MySQL-এ GROUP BY দিয়ে শেষ আপডেট করা রেকর্ড পাওয়া

GROUP BY এবং MAX() ফাংশন ব্যবহার করে গ্রুপ অনুযায়ী সর্বশেষ আপডেট করা রেকর্ড বের করা যায়।

উদাহরণ:

টেবিল তৈরি:

CREATE TABLE DemoTable621 (
    UserName VARCHAR(100),
    UserEmailId VARCHAR(100),
    UserLastPost DATETIME
);

রেকর্ড যোগ করা (একই ইউজারের দুটি পোস্ট):

INSERT INTO DemoTable621 VALUES('John', 'John@gmail.com', '2019-04-10 11:01:10');
INSERT INTO DemoTable621 VALUES('John', 'John@gmail.com', '2019-07-14 13:07:10');

সব রেকর্ড দেখানো:

SELECT * FROM DemoTable621;

আউটপুট:

+----------+----------------+---------------------+
| UserName | UserEmailId    | UserLastPost        |
+----------+----------------+---------------------+
| John     | John@gmail.com | 2019-04-10 11:01:10 |
| John     | John@gmail.com | 2019-07-14 13:07:10 |
+----------+----------------+---------------------+

গ্রুপ বাই করে সর্বশেষ পোস্ট:

SELECT UserName, UserEmailId, MAX(UserLastPost)
FROM DemoTable621
GROUP BY UserName, UserEmailId;

ফলাফল:

+----------+----------------+---------------------+
| UserName | UserEmailId    | max(UserLastPost)   |
+----------+----------------+---------------------+
| John     | John@gmail.com | 2019-07-14 13:07:10 |
+----------+----------------+---------------------+

ব্যাখ্যা: GROUP BY UserName, UserEmailId দিয়ে একই ইউজারের রোগুলো গ্রুপ করা হয়। MAX(UserLastPost) সেই গ্রুপের সর্বোচ্চ (সর্বশেষ) ডেটাইম রিটার্ন করে। পুরো রো চাইলে সাবকোয়েরি বা JOIN ব্যবহার করতে হয়। MySQL ৮.০+ এ ROW_NUMBER() OVER (PARTITION BY ...) ব্যবহার করেও করা যায়।

  1. MySQL কোয়েরি নাম দিয়ে গ্রুপ বাই করে কাউন্ট নতুন কলামে দেখানো

  2. MySQL-এ TRIM() ব্যবহার করে ট্রেইলিং আন্ডারস্কোর (_) মুছে ফেলা

  3. MySQL에서 INFORMATION_SCHEMA.COLUMNS로 컬럼명과 타입 추출하기

  4. MySQL-এ LEFT() এবং SUBSTRING_INDEX() ব্যবহার করে নামের প্রথম অক্ষর (Initials) বের করা