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 ...) ব্যবহার করেও করা যায়।