MySQL-এ টেবিলের শেষ N টি রো এসেন্ডিং অর্ডারে (পুরনো থেকে নতুন) পেতে সাবকোয়েরিতে ORDER BY DESC LIMIT N করে, তারপর বাহ্যিক কোয়েরিতে ORDER BY ASC করতে হয়।
সিনট্যাক্স
SELECT * FROM (
SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 3
) AS anyAliasName ORDER BY yourColumnName;
উদাহরণ
১. টেবিল তৈরি করুন
mysql> CREATE TABLE DemoTable1579 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
২. ডেটা ইনসার্ট করুন
mysql> INSERT INTO DemoTable1579(Name) VALUES('Robert'), ('Bob'), ('Chris'), ('Sam'), ('Mike');
৩. সব রেকর্ড দেখুন
mysql> SELECT * FROM DemoTable1579;
আউটপুট: Id 1-5: Robert, Bob, Chris, Sam, Mike
৪. শেষ ৩টি রো এসেন্ডিং অর্ডারে (Id 3, 4, 5)
mysql> SELECT * FROM (
-> SELECT * FROM DemoTable1579 ORDER BY Id DESC LIMIT 3
-> ) t ORDER BY Id;
৫. ফলাফল
+----+-------+
| Id | Name |
+----+-------+
| 3 | Chris |
| 4 | Sam |
| 5 | Mike |
+----+-------+
ব্যাখ্যা:
- ইনার কোয়েরি: ID 5, 4, 3 (সাম্প্রতিক ৩টি, ডিসেন্ডিং)।
- আউটার কোয়েরি: সেগুলো আবার ID 3, 4, 5 (এসেন্ডিং) এ সাজায়।
- এলিয়াস
tবাধ্যতামূলক (MySQL-এ ডিরাইভড টেবিলের জন্য)।
বিকল্প (MySQL 8.0+ CTE):
WITH last3 AS (SELECT * FROM DemoTable1579 ORDER BY Id DESC LIMIT 3)
SELECT * FROM last3 ORDER BY Id;