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

MySQL-এ CASE স্টেটমেন্ট দিয়ে কাস্টম সর্টিং (দুই কলাম)

MySQL-এ দুটি কলাম ব্যবহার করে কাস্টম সর্টিং করার জন্য ORDER BY এর সাথে CASE স্টেটমেন্ট ব্যবহার করা হয়।

টেবিল এবং ডেটা

CREATE TABLE DemoTable1610 (
    Marks INT,
    Name VARCHAR(20)
);

INSERT INTO DemoTable1610 VALUES(85,'John');
INSERT INTO DemoTable1610 VALUES(78,'Carol');
INSERT INTO DemoTable1610 VALUES(78,'John');
INSERT INTO DemoTable1610 VALUES(85,'Carol');

কুয়েরি: Marks অ্যাসেন্ডিং, Marks সমান হলে Carol আগে

SELECT * FROM DemoTable1610 
ORDER BY Marks, CASE WHEN Name = 'Carol' THEN 1 ELSE 0 END;

ফলাফল

+-------+-------+
| Marks | Name  |
+-------+-------+
| 78    | John  |
| 78    | Carol |
| 85    | John  |
| 85    | Carol |
+-------+-------+

ব্যাখ্যা

  • ORDER BY Marks — প্রথমে Marks অনুযায়ী সর্ট
  • CASE WHEN Name='Carol' THEN 1 ELSE 0 END — Carol হলে ১, অন্যদের ০
  • একই Marks-এ ১ (Carol) ০ (John) থেকে বড়, তাই Carol পরে আসে (ASC ডিফল্ট)
  • Carol আগে দেখাতে চাইলে THEN 0 ELSE 1 END DESC বা THEN -1 ELSE 0 END ব্যবহার করুন

সর্বোচ্চ নমনীয়তা: ORDER BY FIELD()

ORDER BY Marks, FIELD(Name, 'Carol', 'John', 'David');

FIELD() মানটার ইন্ডেক্স রিটার্ন করে (১-ভিত্তিক), না পাওয়া গেলে ০। এটি একাধিক কাস্টম অর্ডারের জন্য উপযুক্ত।

  1. MySQL ORDER BY FIELD()로 사용자 정의 정렬하기

  2. MySQL-এ একসাথে দুটি কলাম আপডেট করা (সিঙ্গল কোয়েরি)

  3. MySQL-এ SUBSTRING_INDEX এবং CAST দিয়ে ফ্লোট ভ্যালু দুটি কলামে ভাগ করা

  4. MySQL-এ কাস্টম ফাংশন ব্যবহার করে ডেটা ভ্যালিডেট করা