MySQL-এ ORDER BY দিয়ে ০ কে শেষে রেখে বাকি সাজানো
সংখ্যাসূচক কলামে ০ থাকলে সেটিকে শেষে রাখে, বাকি সংখ্যাগুলো আসল ক্রমে (ascending/descending) সাজাতে ORDER BY column=0, column ট্রিক ব্যবহার করা হয়।
সিনট্যাক্স
-- Ascending, 0 last SELECT * FROM yourTableName ORDER BY yourColumn=0, yourColumn; -- Descending, 0 last SELECT * FROM yourTableName ORDER BY yourColumn=0, yourColumn DESC;
উদাহরণ সহ ব্যাখ্যা
টেবিল তৈরি ও ডেটা ইনসার্ট:
mysql> CREATE TABLE reorderIntegerExcept0 (value INT); mysql> INSERT INTO reorderIntegerExcept0 VALUES(90),(10),(0),(40),(0),(50),(80),(0),(300);
বর্তমান ডেটা:
mysql> SELECT * FROM reorderIntegerExcept0;
+-------+ | value | +-------+ | 90 | | 10 | | 0 | | 40 | | 0 | | 50 | | 80 | | 0 | | 300 | +-------+
অ্যাসেন্ডিং, ০ শেষে:
mysql> SELECT * FROM reorderIntegerExcept0 ORDER BY value=0, value;
+-------+ | value | +-------+ | 10 | | 40 | | 50 | | 80 | | 90 | | 300 | | 0 | | 0 | | 0 | +-------+
ডিসেন্ডিং, ০ শেষে:
mysql> SELECT * FROM reorderIntegerExcept0 ORDER BY value=0, value DESC;
+-------+ | value | +-------+ | 300 | | 90 | | 80 | | 50 | | 40 | | 10 | | 0 | | 0 | | 0 | +-------+
ব্যাখ্যা: value=0 একটি বুলিয়ান এক্সপ্রেশন যা ০ হলে ১ (TRUE), অন্যথায় ০ (FALSE) রিটার্ন করে। FALSE (০) আগে সাজায়, TRUE (১) পরে। ফলে ০-এগুলো শেষে চলে যায়।