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

MySQL-এ ORDER BY CASE দিয়ে নির্দিষ্ট গ্রুপ প্রথমে র‍্যান্ডম এবং বাকি সর্টেড দেখানো

ফলাফলে নির্দিষ্ট ক্যাটাগরির সারিগুলো প্রথমে র‍্যান্ডম ক্রমে এবং বাকি ক্যাটাগরির সারি الآخر সর্টেড ক্রমে দেখাতে ORDER BY CASE এক্সপ্রেশন ব্যবহার করা হয়।

টেবিল ও ডেটা তৈরি

mysql> CREATE TABLE DemoTable1926 (
    Position VARCHAR(20),
    Number INT
);

mysql> INSERT INTO DemoTable1926 VALUES
    ('Highest', 50), ('Highest', 30),
    ('Lowest', 100), ('Lowest', 120), ('Lowest', 90);

ডেটা যাচাই

mysql> SELECT * FROM DemoTable1926;
+----------+--------+
| Position | Number |
+----------+--------+
| Highest  |     50 |
| Highest  |     30 |
| Lowest   |    100 |
| Lowest   |    120 |
| Lowest   |     90 |
+----------+--------+

কোয়েরি: Highest প্রথমে র‍্যান্ডম, Lowest পরে Number অনুযায়ী ASC

mysql> SELECT * FROM DemoTable1926
    ORDER BY Position DESC,
             CASE Position WHEN 'Highest' THEN RAND() ELSE Number END ASC;

ব্যাখ্যা:

  • Position DESC — 'Lowest' (L) > 'Highest' (H) লেক্সিকোগ্রাফিক্যালি, তাই DESC দিলে Highest আগে আসে।
  • CASE WHEN 'Highest' THEN RAND() ELSE Number END — Highest গ্রুপের জন্য র‍্যান্ডম সর্ট, Lowest-এর জন্য Number ASC।

সম্ভাব্য আউটপুট (RAND() এর কারণে প্রতিবার ভিন্ন):

+----------+--------+
| Position | Number |
+----------+--------+
| Lowest   |     90 |
| Lowest   |    100 |
| Lowest   |    120 |
| Highest  |     50 |
| Highest  |     30 |
+----------+--------+

বিকল্প: UNION ALL পদ্ধতি (নির্দিষ্ট ক্রমে)

(SELECT * FROM DemoTable1926 WHERE Position = 'Highest' ORDER BY RAND())
UNION ALL
(SELECT * FROM DemoTable1926 WHERE Position = 'Lowest' ORDER BY Number);

কোনটি ব্যবহার করবেন?

  • ORDER BY CASE: একক কোয়েরি, ইনডেক্স ব্যবহার করতে পারে, পেজিনেশন সহজ।
  • UNION ALL: লজিক স্পষ্ট, কিন্তু পেজিনেশন জটিল।
  1. MySQL-এ শেষ ৫০টি এন্ট্রি থেকে ৫টি র‍্যান্ডম সারি বের করা

  2. MySQL-এ LIKE এবং SUBSTRING ব্যবহার করে মিলে যাওয়া স্ট্রিং বের করে নতুন কলাম তৈরি করা

  3. MySQL-এ বর্তমান তারিখ (NOW/CURDATE) থেকে ছোট তারিখের রেকর্ড বের করা

  4. MySQL-এ CONCAT_WS ব্যবহার করে শর্তসাপেক্ষ রো সিলেক্ট করা