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

MySQL-এ NOT IN সাবকোয়েরি দিয়ে ডুপ্লিকেট ID-র মধ্যে নির্দিষ্ট শর্ত বাদ দিয়ে একক মান খুঁজে বের করা


NOT IN সাবকোয়েরি দিয়ে বর্জন-ভিত্তিক ফিল্টারিং

MySQL-এ ডুপ্লিকেট ID-র মধ্যে যেসব ID-তে নির্দিষ্ট শর্ত (যেমন FirstName='Chris') পূরণ হয়, সেসব ID বাদ দিয়ে বাকি ID গুলো বের করতে NOT IN সাবকোয়েরি ব্যবহার করা হয়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (Id INT, FirstName VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES
(100,'Chris'), (100,'Robert'), (100,'Mike'), (100,'Sam'),
(101,'David'), (101,'Robert'),
(210,'Chris'), (210,'Bob'), (210,'Sam');

সব রেকর্ড

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Chris     |
| 100  | Robert    |
| 100  | Mike      |
| 100  | Sam       |
| 101  | David     |
| 101  | Robert    |
| 210  | Chris     |
| 210  | Bob       |
| 210  | Sam       |
+------+-----------+

কোয়েরি: 'Chris' আছে এমন ID বাদ দিয়ে অন্য ID বের করা

mysql> SELECT DISTINCT Id FROM DemoTable 
WHERE Id NOT IN (SELECT Id FROM DemoTable WHERE FirstName = 'Chris');
+------+
| Id   |
+------+
| 101  |
+------+

ব্যাখ্যা

  • সাবকোয়েরি: SELECT Id FROM DemoTable WHERE FirstName = 'Chris' → রিটার্ন করে 100, 210।
  • মেইন কোয়েরি: Id NOT IN (100, 210) → 100, 210 বাদ দিয়ে বাকি ID (101) রিটার্ন করে।
  • DISTINCT — ডুপ্লিকেট ID (101 দুবার আছে) একবারই দেখায়।

সতর্কতা

  • সাবকোয়েরি NULL রিটার্ন করলে NOT IN কোনো রো রিটার্ন করে না (NULL তুলনা UNKNOWN)।
  • বিকল্প: NOT EXISTS (SELECT 1 FROM DemoTable d2 WHERE d2.Id = d1.Id AND d2.FirstName = 'Chris') — NULL-সেফ।
  1. MySQL স্টোরড প্রসিডিউরে শর্তসাপেক্ষ UPDATE (WHERE ক্লজ সহ)

  2. MySQL-এ সাবকুয়েরি এবং NOT IN ব্যবহার করে নির্দিষ্ট মান নেই এমন রেকর্ড বের করা

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

  4. MySQL-এ RLIKE ব্যবহার করে একাধিক শব্দ দিয়ে রেকর্ড ফিল্টার করা