MySQL-এ নির্দিষ্ট মানগুলো নির্দিষ্ট ক্রমে সর্ট করতে ORDER BY CASE WHEN ব্যবহার করা হয়।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo51 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20)
);
INSERT INTO demo51(name) VALUES ('John'), ('Bob'), ('David'), ('Sam');
টেবিলের ডেটা:
+----+-------+ | id | name | +----+-------+ | 1 | John | | 2 | Bob | | 3 | David | | 4 | Sam | +----+-------+
কোয়েরি
নাম অনুযায়ী কাস্টম অর্ডার: John (১১০), Bob (১০৫), David (১০৪), বাকি (১০১):
SELECT * FROM demo51
ORDER BY
CASE
WHEN name = 'John' THEN 110
WHEN name = 'Bob' THEN 105
WHEN name = 'David' THEN 104
ELSE 101
END;
আউটপুট
+----+-------+ | id | name | +----+-------+ | 4 | Sam | | 3 | David | | 2 | Bob | | 1 | John | +----+-------+
ব্যাখ্যা: CASE এক্সপ্রেশন প্রতিটি রোয়ের জন্য একটি সর্ট কী রিটার্ন করে। MySQL সেই কী অনুযায়ী অ্যাসেন্ডিং অর্ডারে সর্ট করে। এখানে Sam-এর কী ১০১ (ELSE), David ১০৪, Bob ১০৫, John ১১০। তাই Sam প্রথমে, John শেষে। ডিসেন্ডিং চাইলে ORDER BY ... DESC ব্যবহার করুন।