SELF JOIN প্যাটার্ন
একই টেবিলকে দুবার জয়েন করে যে কালামের মান একাধিক সারিতে আছে সেগুলো বের করতে SELECT DISTINCT t1.* FROM table t1 JOIN table t2 ON t2.id <> t1.id AND t2.col = t1.col ব্যবহার করুন।
উদাহরণ: টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (UserId INT, UserName VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES(10,'John'),(11,'Sam'),(12,'Larry'),(13,'David'),(14,'Larry');
সকল রেকর্ড (Larry ২ বার):
+--------+----------+ | UserId | UserName | +--------+----------+ | 10 | John | | 11 | Sam | | 12 | Larry | | 13 | David | | 14 | Larry | +--------+----------+
ডুপ্লিকেট নামवाले সারিগুলো বের করুন
mysql> SELECT DISTINCT tbl1.* FROM DemoTable tbl1
JOIN DemoTable tbl2 ON tbl2.UserId <> tbl1.UserId AND tbl2.UserName = tbl1.UserName;
ফলাফল:
+--------+----------+ | UserId | UserName | +--------+----------+ | 14 | Larry | | 12 | Larry | +--------+----------+
বিকল্প (MySQL 8.0+): SELECT * FROM DemoTable WHERE UserName IN (SELECT UserName FROM DemoTable GROUP BY UserName HAVING COUNT(*) > 1); - এটি আরও পঠনীয় এবং সাধারণত দ্রুত। DISTINCT ছাড়া ডাবল রো আসবে।