MySQL-এ সাবকোয়ারি ব্যবহার করে 탑 N রেকর্ড বের করে আবার সর্ট করা
MySQL-এ সাবকোয়ারি (derived table) ব্যবহার করে প্রথম 탑 N রেকর্ড বের করে, তারপর সেগুলোকে অন্য একটি কলাম অনুযায়ী সর্ট করা যায়। এটি "টপ N গ্রুপে আবার সর্টিং" করার জন্য কার্যকর।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE DemoTable (Name VARCHAR(40), Score INT);
INSERT INTO DemoTable VALUES
('Chris', 45), ('Bob', 98), ('David', 78), ('Mike', 96), ('Carol', 43);
টপ ৩ স্কোর বের করে নাম অনুযায়ী সর্ট
SELECT * FROM (
SELECT Name, Score
FROM DemoTable
ORDER BY Score DESC, Name ASC
LIMIT 3
) AS tbl
ORDER BY Name;
আউটপুট:
+-------+-------+
| Name | Score |
+-------+-------+
| Bob | 98 |
| David | 78 |
| Mike | 96 |
+-------+-------+
ব্যাখ্যা
- ইনার কোয়ারি:
ORDER BY Score DESC, Name ASC LIMIT 3— 탑 ৩ স্কোর বের করে (টাই ব্রেকারের জন্য নাম)۔ - আউটার কোয়ারি: সাবকোয়ারির ফলাফলে
ORDER BY Name— নাম অনুযায়ী সর্ট করে।
পারফরম্যান্স টিপ
Scoreকলামে ইন্ডেক্স থাকলে টপ N বের করা দ্রুত হয়।- MySQL 8.0+ এ
WITH(CTE) ব্যবহার করলে আরও পঠনযোগ্য হয়।