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

MySQL-এ IN() ক্লজ দিয়ে লুপের মতো অল্টারনেট ID রেকর্ড ফিল্টার করা


WHERE Id IN(...) দিয়ে নির্দিষ্ট ID-র রেকর্ড বের করা (লুপের বিকল্প)

MySQL-এ প্রোগ্রামিং লুপ (for/while) নেই, কিন্তু IN() ক্লজ ব্যবহার করে নির্দিষ্ট একাধিক ID-র রেকর্ড একসাথে বের করা যায়, যা লুপের মতো ফলাফল দেয়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (ClientId INT, ClientName VARCHAR(100), ClientAge INT);
mysql> INSERT INTO DemoTable VALUES(100,'Chris',34), (101,'Robert',31), (103,'David',33), (104,'Mike',45), (105,'Sam',39);

সব রেকর্ড

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 100      | Chris      | 34        |
| 101      | Robert     | 31        |
| 103      | David      | 33        |
| 104      | Mike       | 45        |
| 105      | Sam        | 39        |
+----------+------------+-----------+

IN() দিয়ে অল্টারনেট ID (101, 103, 105) ফিল্টার

mysql> SELECT ClientId, ClientName, ClientAge FROM DemoTable WHERE ClientId IN(101,103,105);
+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 101      | Robert     | 31        |
| 103      | David      | 33        |
| 105      | Sam        | 39        |
+----------+------------+-----------+

ব্যাখ্যা

  • IN(101,103,105) — এই ID-র যেকোনো একটি ম্যাচ করলে রো সিলেক্ট হয়।
  • এটি লুপের সমতুল্য: for id in [101,103,105]: select where ClientId=id।
  • ID গুলো সিকোয়েন্সে না থাকলেও কাজ করে।

প্যাটার্ন-ভিত্তিক ফিল্টার (MOD দিয়ে)

SELECT * FROM DemoTable WHERE ClientId % 2 = 1;  -- বিজোড় ID
SELECT * FROM DemoTable WHERE ClientId % 2 = 0;  -- জোড় ID
  1. MySQL টেবিল থেকে অল্টারনেট ইভেন-নাম্বার্ড রেকর্ড কীভাবে ফেচ করবেন?

  2. MySQL-এ LIKE ওয়াইল্ডকার্ড দিয়ে কেস-ইনসেনসিটিভ সার্চ

  3. MySQL-এ WHERE ক্লজে SUM() ফলাফল ব্যবহার না করে HAVING ব্যবহার করা

  4. MySQL-এ একক WHERE ক্লজ দিয়ে একাধিক সারি আপডেট করা