CASE WHEN দিয়ে কাস্টম প্রায়োরিটি সাজানো
MySQL-এ ORDER BY CASE WHEN col = 'value' THEN 1 ELSE 2 END প্যাটার্ন ব্যবহার করে নির্দিষ্ট মানবালা রোকে শীর্ষে আনা এবং বাকি গুলোকে সাধারণ ক্রমে সাজানো যায়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (StudentName VARCHAR(100), StudentMarks INT);
mysql> INSERT INTO DemoTable VALUES('Chris',45), ('John',67), ('David',89), ('John',98), ('Mike',79), ('John',99);
সব রেকর্ড
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 45 | | John | 67 | | David | 89 | | John | 98 | | Mike | 79 | | John | 99 | +-------------+--------------+
ORDER BY CASE WHEN (John কে শীর্ষে)
mysql> SELECT * FROM DemoTable ORDER BY CASE StudentName WHEN 'John' THEN 2 ELSE 3 END, StudentName, StudentMarks;
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | John | 67 | | John | 98 | | John | 99 | | Chris | 45 | | David | 89 | | Mike | 79 | +-------------+--------------+
ব্যাখ্যা
CASE StudentName WHEN 'John' THEN 2 ELSE 3 END— 'John' হলে ২, অন্যদের ৩ (নাম্বার ছোট হলে আগে আসে)۔- দ্বিতীয়
StudentName— 'John' গ্রুপের মধ্যে নাম অনুযায়ী (সব John-ই, তাই সহজ)۔ - তৃতীয়
StudentMarks— একই নামের মধ্যে মার্কস অনুযায়ী ASC (67, 98, 99)۔
সাধারণত প্রায়োরিটি ১,২,৩... দিয়ে লিখা ভালো
ORDER BY CASE StudentName WHEN 'John' THEN 1 ELSE 2 END, StudentMarks;
এবং CASE WHEN StudentName = 'John' THEN 1 WHEN StudentName = 'Admin' THEN 2 ELSE 3 END দিয়ে একাধিক প্রায়োরিটি লেভেল ডিফাইন করা যায়।