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

MySQL-এ নির্দিষ্ট মান প্রথমে দেখিয়ে বাকি ডেট অনুযায়ী সর্ট করা

ফলাফলে নির্দিষ্ট একটি মান (যেমন `UserName = 'David'`) সবচেয়ে উপরে রাখে, বাকি সারিগুলো অন্য একটি কলাম (যেমন `ShippingDate`) অনুযায়ী সর্ট করতে ORDER BY (condition) DESC, column প্যাটার্ন ব্যবহার করা হয়।

টেবিল ও ডেটা তৈরি

mysql> CREATE TABLE DemoTable1932 (
    UserName VARCHAR(20),
    ShippingDate DATE
);

mysql> INSERT INTO DemoTable1932 VALUES
    ('Chris', '2018-10-12'),
    ('David', '2019-04-11'),
    ('Mike', '2016-12-04'),
    ('Carol', '2017-12-26');

ডেটা যাচাই

mysql> SELECT * FROM DemoTable1932;
+----------+--------------+
| UserName | ShippingDate |
+----------+--------------+
| Chris    | 2018-10-12   |
| David    | 2019-04-11   |
| Mike     | 2016-12-04   |
| Carol    | 2017-12-26   |
+----------+--------------+

কোয়েরি: David প্রথমে, বাকি ShippingDate ASC

mysql> SELECT * FROM DemoTable1932
    ORDER BY UserName = 'David' DESC, ShippingDate;

ব্যাখ্যা:

  • UserName = 'David' — বুলিয়ান এক্সপ্রেশন, David হলে ১ (TRUE), অন্যদের ০ (FALSE)।
  • DESC — ১ (TRUE) আগে আসে, তাই David উপরে।
  • ShippingDate — বাকি সারিগুলো এই কলাম অনুযায়ী আরোহী ক্রমে।

আউটপুট:

+----------+--------------+
| UserName | ShippingDate |
+----------+--------------+
| David    | 2019-04-11   |
| Mike     | 2016-12-04   |
| Carol    | 2017-12-26   |
| Chris    | 2018-10-12   |
+----------+--------------+

বিকল্প: CASE WHEN (আরও স্পষ্ট)

ORDER BY CASE WHEN UserName = 'David' THEN 0 ELSE 1 END, ShippingDate;

বহুমান বর্জন (Multiple Priority)

ORDER BY CASE UserName
    WHEN 'David' THEN 1
    WHEN 'Chris' THEN 2
    ELSE 3
END, ShippingDate;

পারফরম্যান্স নোট

ORDER BY (col = 'val') DESC এক্সপ্রেশন ইন্ডেক্স ব্যবহার করতে পারে না। বড় টেবিলে এটি স্লো হতে পারে। সমাধান: প্রায়ورিটি কলাম যোগ করে সেটিতে ইন্ডেক্স দিন।

  1. MySQL-এ ORDER BY এবং LIMIT OFFSET দিয়ে ২য় সারি বের করা

  2. MySQL-এ BETWEEN দিয়ে দ্রুত ডেটা রেঞ্জ সার্চ করা

  3. MySQL-এ GROUP BY + MAX() ব্যবহার করে প্রতিটি গ্রুপের সর্বোচ্চ মান বের করা

  4. MySQL-এ প্রথম ৩ রোয়ের কলাম মান নির্দিষ্ট মান দিয়ে আপডেট করা