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

MySQL-এ একাধিক LIKE অপারেটর ORDER BY-এ ব্যবহার করা

MySQL-এ ORDER BY ক্লজে একাধিক LIKE কন্ডিশন যোগ করে সর্টিং প্রায়োরিটি নির্ধারণ করা যায়। MySQL-এ বুলিয়ান এক্সপ্রেশন TRUE=1, FALSE=0 রিটার্ন করে। একাধিক লাইক কন্ডিশন যোগ করে যেটি বেশি ম্যাচ করবে সেটি উপরে আসবে।

টেবিল ও ডেটা

mysql> CREATE TABLE demo2 (
    -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> name VARCHAR(100)
    -> ); 
Query OK, 0 rows affected (1.53 sec)

mysql> INSERT INTO demo2 (name) VALUES 
('John'), ('David'), ('John Smith'), ('John Doe'), ('David Miller'), ('Chris'), ('Bob Doe');
mysql> SELECT * FROM demo2;
+----+--------------+
| id | name         |
+----+--------------+
| 1  | John         |
| 2  | David        |
| 3  | John Smith   |
| 4  | John Doe     |
| 5  | David Miller |
| 6  | Chris        |
| 7  | Bob Doe      |
+----+--------------+

মাল্টিপল LIKE দিয়ে ORDER BY

প্রায়োরিটি: 'Doe' থাকলে +1, 'David' থাকলে +1। মোট স্কোর বড় হলে উপরে।

mysql> SELECT * FROM demo2
    -> ORDER BY
    ->   (name LIKE '%Doe%') +
    ->   (name LIKE '%David%') DESC;

ফলাফল

+----+--------------+
| id | name         |
+----+--------------+
| 2  | David        |  -- David ম্যাচ (1), Doe না (0) = 1
| 4  | John Doe     |  -- Doe ম্যাচ (1), David না (0) = 1
| 5  | David Miller |  -- David ম্যাচ (1), Doe না (0) = 1
| 7  | Bob Doe      |  -- Doe ম্যাচ (1), David না (0) = 1
| 1  | John         |  -- 0
| 3  | John Smith   |  -- 0
| 6  | Chris        |  -- 0
+----+--------------+

নোট: সমান স্কোর হলে অর্ডার অনির্দিষ্ট (ইনসার্ট অর্ডার অনুযায়ী)। টাই ব্রেকারের জন্য সেকেন্ডারি ORDER BY name যোগ করুন।

  1. MySQL-এ একাধিক কলামে একাধিক COUNT করার পদ্ধতি

  2. MySQL-এ ORDER BY CASE WHEN ব্যবহার করে কাস্টম সর্টিং করা

  3. MySQL-এ একাধিক LIKE অপারেটর একসাথে ব্যবহার করা (OR কন্ডিশন সহ)

  4. MySQL-এ LIKE অপারেটর দিয়ে একাধিক ফিল্ডে একই মান খুঁজে বের করা