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

MySQL-এ JOIN ব্যবহার করে টেবিলে ডুপ্লিকেট ভ্যালু খুঁজে বের করা

MySQL-এ সেলফ-জয়েন (Self Join) ব্যবহার করে একই টেবিলের কলামে ডুপ্লিকেট ভ্যালু খুঁজে বের করা যায়।

টেবিল: stock_item

mysql> Select * from stock_item;
+------------+----------+
| item_name  | quantity |
+------------+----------+
| Calculator | 89       |
| Notebooks  | 40       |
| Pencil     | 40       |
| Pens       | 32       |
| Shirts     | 29       |
| Shoes      | 29       |
| Trousers   | 29       |
+------------+----------+

Self Join দিয়ে ডুপ্লিকেট quantity খুঁজে বের করা

mysql> Select distinct g.item_name, g.quantity
    -> from stock_item g
    -> INNER JOIN stock_item b ON g.quantity = b.quantity
    -> WHERE g.item_name <> b.item_name;
+-----------+----------+
| item_name | quantity |
+-----------+----------+
| Pencil    | 40       |
| Notebooks | 40       |
| Shoes     | 29       |
| Trousers  | 29       |
| Shirts    | 29       |
+-----------+----------+

ব্যাখ্যা: টেবিলকে নিজের সাথে জয়েন করা হয় (g এবং b এলিয়াস)। g.quantity = b.quantity ম্যাচ করলে এবং g.item_name <> b.item_name শর্তে আলাদা আইটেম হলে ডুপ্লিকেট কাঙ্ক্ষিত। DISTINCT দিয়ে ডুপ্লিকেট রো সরানো হয়।

বিকল্প: GROUP BY quantity HAVING COUNT(*) > 1 দিয়ে শুধু ডুপ্লিকেট quantity বের করা সহজ। কিন্তু Self Join দিয়ে আইটেম নামও পাওয়া যায়।

  1. MySQL ভিউতে মান আপডেট করা (টেবিলের মতো)

  2. PHP স্ক্রিপ্ট দিয়ে MySQL টেবিলের NULL ভ্যালু হ্যান্ডলিং

  3. MySQL টেবিলে কলাম সংখ্যা কীভাবে জানবেন?

  4. MySQL-এ LEFT JOIN ব্যবহার করে ডুপ্লিকেট রেকর্ড মুছে ফেলা (রखতে চাই প্রথম রো)