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

MySQL-এ নির্দিষ্ট মানवाले রেকর্ডগুলো প্রথমে দেখানোর জন্য ORDER BY কাস্টমাইজ করা

MySQL-এ ORDER BY CASE ... WHEN ... THEN ... ELSE ... END কনস্ট্রাক্ট ব্যবহার করে নির্দিষ্ট মানवाले রেকর্ডগুলো ফলাফলের শুরুতে আনা যায়।

উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> create table DemoTable808(Value varchar(100)); 
Query OK, 0 rows affected (0.61 sec)
mysql> insert into DemoTable808 values('smith'); 
Query OK, 1 row affected (0.13 sec) 
mysql> insert into DemoTable808 values('Adamsmith'); 
Query OK, 1 row affected (0.18 sec) 
mysql> insert into DemoTable808 values('Carolsmith'); 
Query OK, 1 row affected (0.20 sec) 
mysql> insert into DemoTable808 values('smithJohn'); 
Query OK, 1 row affected (0.16 sec)

সকল রেকর্ড দেখানো (ডিফল্ট অর্ডার)

mysql> select * from DemoTable808;
+------------+
| Value      |
+------------+
| smith      |
| Adamsmith  |
| Carolsmith |
| smithJohn  |
+------------+
4 rows in set (0.00 sec)

'smith' দিয়ে শুরু হওয়া মানগুলো প্রথমে, তারপর বাকিগুলো অ্যালফাবেটিক্যালি

mysql> select * from DemoTable808 order by case when Value like 'smith%' then 0 else 1 end asc, Value asc;
+------------+
| Value      |
+------------+
| smith      |
| smithJohn  |
| Adamsmith  |
| Carolsmith |
+------------+
4 rows in set (0.00 sec)

ব্যাখ্যা

  • CASE WHEN Value LIKE 'smith%' THEN 0 ELSE 1 END - 'smith%' মিললে ০ (সর্বোচ্চ প্রাধান্য), অন্যদের ১
  • ASC - ০ প্রথমে আসবে
  • Value ASC - টাই ব্রেকারের জন্য সেকেন্ডারি সর্ট

বিকল্প পদ্ধতি: FIELD() ফাংশন

mysql> select * from DemoTable808 
    order by field(Value, 'smith', 'smithJohn', 'Adamsmith', 'Carolsmith');

ব্যবহারিক প্রয়োগ: স্ট্যাটাস ফিল্ডে 'ACTIVE' আগে, তারপর 'PENDING', শেষে 'INACTIVE' দেখাতে এই প্যাটার্ন খুব কাজে লাগে।

  1. Java ব্যবহার করে MySQL টেবিলে রেকর্ড সন্নিবেশ করা

  2. MySQL에서 가장 최근 시간 레코드 조회하기

  3. MySQL-এ নির্দিষ্ট সারি মাত্র ডিলিট করার পদ্ধতি (NOT IN ব্যবহার)

  4. MySQL-এ AND ও OR অপারেটর ব্যবহার করে নির্দিষ্ট রেকর্ড বের করা