ORDER BY CASE/BOOLEAN দিয়ে নির্দিষ্ট প্যাটার্নের রোকে প্রথমে আনা
MySQL-এ আন্ডারস্কোর (_) সম্বলিত স্ট্রিং (যেমন 'John_Smith') কে সাজানোর সময় নির্দিষ্ট প্যাটার্ন (যেমন 'John_%') দিয়ে ম্যাচ করা রোগুলোকে প্রথমে আনা যায়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (Name VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES('John_Smith'), ('Chris Brown'), ('John_Doe'), ('David Miller'), ('Carol Taylor');
সাধারণ সাজানো (ডিফল্ট)
+--------------+ | Name | +--------------+ | John_Smith | | Chris Brown | | John_Doe | | David Miller | | Carol Taylor | +--------------+
ORDER BY (Name LIKE 'John_%') DESC
mysql> SELECT * FROM DemoTable ORDER BY (Name LIKE 'John_%') DESC, RAND();
+--------------+ | Name | +--------------+ | John_Doe | | John_Smith | | Carol Taylor | | David Miller | | Chris Brown | +--------------+
ব্যাখ্যা
(Name LIKE 'John_%')— 'John_' দিয়ে শুরু হলে TRUE (1), নহলে FALSE (0)।DESC— TRUE (1) কে FALSE (0) থেকে আগে আনে।RAND()— একই গ্রুপের মধ্যে র্যান্ডম সাজানো (দ্বিতীয় সাজানোর ক্রাইটেরিয়া)।
বিকল্প: CASE WHEN
ORDER BY CASE WHEN Name LIKE 'John_%' THEN 0 ELSE 1 END, Name;
এটি আরও পঠনীয় এবং একাধিক প্রায়োরিটি লেভেল ডিফাইন করতে পারা যায়।