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

MySQL-এ শেষ ৩টি রো ASC অর্ডারে সিলেক্ট করা (সাবকোয়েরি ব্যবহার)

MySQL-এ টেবিলের শেষ N টি রো ASC অর্ডারে (ক্রমবর্ধমান) পেতে সাবকোয়েরি ব্যবহার করতে হয়। প্রথমে DESC দিয়ে শেষ N টি নেওয়া হয়, তারপর বাইরের কোয়েরিতে ASC দিয়ে সর্ট করা হয়।

সিনট্যাক্স

SELECT * FROM (
    SELECT * FROM yourTableName 
    ORDER BY yourIdColumnName DESC 
    LIMIT N
) AS anyAliasName 
ORDER BY yourIdColumnName ASC;

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName VARCHAR(100)
    -> );
mysql> INSERT INTO DemoTable(ClientName) VALUES('Larry');
mysql> INSERT INTO DemoTable(ClientName) VALUES('Chris');
mysql> INSERT INTO DemoTable(ClientName) VALUES('Bob');
mysql> INSERT INTO DemoTable(ClientName) VALUES('David');
mysql> INSERT INTO DemoTable(ClientName) VALUES('Carol');
mysql> INSERT INTO DemoTable(ClientName) VALUES('Robert');
mysql> INSERT INTO DemoTable(ClientName) VALUES('Sam');
mysql> INSERT INTO DemoTable(ClientName) VALUES('Mike');

সব রেকর্ড দেখুন

mysql> SELECT * FROM DemoTable;
+----------+------------+
| ClientId | ClientName |
+----------+------------+
|        1 | Larry      |
|        2 | Chris      |
|        3 | Bob        |
|        4 | David      |
|        5 | Carol      |
|        6 | Robert     |
|        7 | Sam        |
|        8 | Mike       |
+----------+------------+

শেষ ৩টি রো ASC অর্ডারে (Id 6, 7, 8)

mysql> SELECT * FROM (
    ->     SELECT * FROM DemoTable 
    ->     ORDER BY ClientId DESC 
    ->     LIMIT 3
    -> ) tbl 
    -> ORDER BY ClientId ASC;

ফলাফল

+----------+------------+
| ClientId | ClientName |
+----------+------------+
|        6 | Robert     |
|        7 | Sam        |
|        8 | Mike       |
+----------+------------+

ধাপে ধাপে ব্যাখ্যা:

  1. ইনার কোয়েরি: ORDER BY ClientId DESC LIMIT 3 → শেষ ৩টি রো (Id: 8, 7, 6) নেয়
  2. আউটার কোয়েরি: ORDER BY ClientId ASC → সেগুলো ASC-এ সর্ট করে (Id: 6, 7, 8)

আধুনিক MySQL 8.0+ এ: CTE ব্যবহার

WITH last_three AS (
    SELECT * FROM DemoTable 
    ORDER BY ClientId DESC 
    LIMIT 3
)
SELECT * FROM last_three 
ORDER BY ClientId ASC;

ব্যবহার: লগ এন্ট্রি, নোটিফিকেশন, ট্রানজ্যাকশন ইত্যাদির লেটেস্ট N টি দেখাতে কিন্তু পুরনো থেকে নতুন ক্রমে।

  1. MySQL-এ "SELECT FROM" না ব্যবহার করে টেবিল আছে কিনা চেক করা

  2. MySQL-এ শেষ ১০টি সারি কীভাবে বের করবেন?

  3. MySQL-এ ORDER BY RAND() LIMIT 1 ব্যবহার করে র‍্যান্ডম রেকর্ড নির্বাচন করুন

  4. MySQL-এ প্রথম এবং শেষ সারি বাদ দিয়ে বাকি সারি বের করা