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

MySQL-এ IN() দিয়ে কাস্টম অর্ডারে কলাম মান সিলেক্ট

MySQL-এ নির্দিষ্ট ক্রমে রেকর্ড পেতে WHERE ... IN (...) ব্যবহার করুন; তবে আউটপুট অর্ডার নিশ্চিত করতে ORDER BY FIELD() লাগবে।

উদাহরণ

mysql> CREATE TABLE DemoTable727 (Name VARCHAR(100), Score INT);
Query OK, 0 rows affected (0.88 sec)

mysql> INSERT INTO DemoTable727 VALUES
('Chris', 45), ('Robert', 89), ('Carol', 94), ('David', 93), ('Mike', 78), ('Sam', 67);
Query OK, 6 rows affected

সব রেকর্ড

mysql> SELECT * FROM DemoTable727;
+--------+-------+
| Name   | Score |
+--------+-------+
| Chris  | 45    |
| Robert | 89    |
| Carol  | 94    |
| David  | 93    |
| Mike   | 78    |
| Sam    | 67    |
+--------+-------+

নির্দিষ্ট নামের স্কোর (কাস্টম অর্ডার: Robert, David, Sam)

mysql> SELECT Score FROM DemoTable727
WHERE Name IN ('Robert', 'David', 'Sam')
ORDER BY FIELD(Name, 'Robert', 'David', 'Sam');
+-------+
| Score |
+-------+
| 89    |  -- Robert
| 93    |  -- David
| 67    |  -- Sam
+-------+

FIELD() ফাংশন

  • FIELD(str, str1, str2, ...) → str কোন পজিশনে আছে তা রিটার্ন করে (১-বেসড)
  • নাও থাকলে ০ রিটার্ন করে
  • ORDER BY FIELD(col, 'val1', 'val2') দিয়ে কাস্টম সর্ট

নোট: শুধু IN() দিয়ে আউটপুট অর্ডার গ্যারান্টি নেই।

  1. MySQL-এ রিজার্ভড ওয়ার্ড 'order' টেবিল নাম হিসেবে ব্যবহার করুন (ব্যাকটিকস)

  2. MySQL-এ ভিন্ন কলাম वाले টেবিলে ডেটা কপি করা (INSERT INTO SELECT)

  3. MySQL-এ IN() অপারেটর দিয়ে একক কোয়েরিতে একাধিক রেকর্ড ডিলিট করা

  4. MySQL-এ ভ্যালু ০ হলে অন্য কলাম থেকে ডেটা সিলেক্ট করা