MySQL-এ যেসব লাস্ট নেম শুধু একবার এসেছে (ইউনিক), সেই ইউজারদের খুঁজে বের করতে GROUP BY ... HAVING COUNT() = 1 ব্যবহার করা হয়।
উদাহরণ
টেবিল তৈরি:
CREATE TABLE demo76 (firstName VARCHAR(20), lastName VARCHAR(20));
INSERT INTO demo76 VALUES ('John', 'Doe'), ('David', 'Smith'), ('Adam', 'Smith');
টেবিলের ডেটা:
+-----------+----------+ | firstName | lastName | +-----------+----------+ | John | Doe | | David | Smith | | Adam | Smith | +-----------+----------+
কোয়েরি
SELECT
MAX(tbl.firstName) AS firstName,
tbl.lastName,
COUNT(DISTINCT tbl.firstName) AS CountOfFirstName
FROM demo76 AS tbl
GROUP BY tbl.lastName
HAVING COUNT(DISTINCT tbl.firstName) = 1;
আউটপুট
+-----------+----------+------------------+ | firstName | lastName | CountOfFirstName | +-----------+----------+------------------+ | John | Doe | 1 | +-----------+----------+------------------+
ব্যাখ্যা:
GROUP BY tbl.lastName- লাস্ট নেম অনুযায়ী গ্রুপ।COUNT(DISTINCT tbl.firstName)- প্রতিটি লাস্ট নেম গ্রুপে কতজন ভিন্ন ফার্স্ট নেম আছে।HAVING ... = 1- শুধু একজন ফার্স্ট নেম থাকা গ্রুপ (ইউনিক লাস্ট নেম)।MAX(tbl.firstName)- গ্রুপে একজনের ফার্স্ট নেম দেখানোর জন্য (যেকোনো এগгреগেশন: MIN/MAX)।
লাস্ট নেম 'Smith' দুজনের (David, Adam) -> কাউন্ট ২ -> বাদ। লাস্ট নেম 'Doe' একজনের (John) -> কাউন্ট ১ -> সিলেক্টেড।
বিকল্প (MySQL 8.0+): উইন্ডো ফাংশন COUNT(*) OVER (PARTITION BY lastName) = 1।