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 দিয়ে আইটেম নামও পাওয়া যায়।