MySQL-এ নির্দিষ্ট সংখ্যকবার (যেমন ১-এর বেশি) উপস্থিত ফিল্ড ফেরত দেওয়ার জন্য DISTINCT, GROUP BY এবং HAVING ক্লজ ব্যবহার করা হয়।
সিনট্যাক্স
SELECT DISTINCT yourColumnName, COUNT(yourColumnName) FROM yourTableName WHERE yourColumnName LIKE 'J%' GROUP BY yourColumnName HAVING COUNT(*) > 1 ORDER BY yourColumnName;
টেবিল তৈরি ও ডেটা ইনসার্ট
CREATE TABLE DemoTable1500 (
Name VARCHAR(20)
);
INSERT INTO DemoTable1500 VALUES('Adam');
INSERT INTO DemoTable1500 VALUES('John');
INSERT INTO DemoTable1500 VALUES('Mike');
INSERT INTO DemoTable1500 VALUES('John');
INSERT INTO DemoTable1500 VALUES('Jace');
INSERT INTO DemoTable1500 VALUES('Jace');
INSERT INTO DemoTable1500 VALUES('Jackie');
সকল রেকর্ড দেখানো
SELECT * FROM DemoTable1500;
আউটপুট
+--------+ | Name | +--------+ | Adam | | John | | Mike | | John | | Jace | | Jace | | Jackie | +--------+ 7 rows in set (0.00 sec)
J অক্ষর দিয়ে শুরু হয়ে ১-এর বেশি বার উপস্থিত নাম বের করা
SELECT DISTINCT Name, COUNT(Name) FROM DemoTable1500 WHERE Name LIKE 'J%' GROUP BY Name HAVING COUNT(*) > 1 ORDER BY Name;
আউটপুট
+------+-------------+ | Name | COUNT(Name) | +------+-------------+ | Jace | 2 | | John | 2 | +------+-------------+ 2 rows in set (0.00 sec)
ব্যাখ্যা: WHERE Name LIKE 'J%' শুধু 'J' দিয়ে শুরু হওয়া নামগুলো ফিল্টার করে। GROUP BY Name একই নামগুলো গ্রুপ করে। HAVING COUNT(*) > 1 শুধু ১-ের বেশিবার উপস্থিত গ্রুপগুলো রাখে। DISTINCT এখানে অপ্রয়োজনীয় কারণ GROUP BY ইতিমধ্যে ইউনিক নাম নিশ্চিত করে। ORDER BY Name ফলাফল সর্ট করে।