Sử dụng SELF JOIN (bảng tự nối với chính nó) để tìm các hàng có giá trị trùng lặp ở cột cụ thể.
Dữ liệu mẫu
mysql> SELECT * FROM stock_item; +------------+----------+ | item_name | quantity | +------------+----------+ | Calculator | 89 | | Notebooks | 40 | | Pencil | 40 | | Pens | 32 | | Shirts | 29 | | Shoes | 29 | | Trousers | 29 | +------------+----------+
Truy vấn tìm trùng lặp cột 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;
Kết quả
+-----------+----------+ | item_name | quantity | +-----------+----------+ | Pencil | 40 | | Notebooks | 40 | | Shoes | 29 | | Trousers | 29 | | Shirts | 29 | +-----------+----------+
Giải thích: Nối bảng với chính nó trên cột quantity, loại trừ trường hợp cùng tên món hàng (g.item_name <> b.item_name). DISTINCT loại bỏ kết quả trùng lặp do cặp (A,B) và (B,A) đều khớp.