কম্পিউটার টিউটোরিয়াল

MySQL-এ GROUP BY HAVING COUNT ব্যবহার করে ইউনিক লাস্ট নেম वाले ইউজার খুঁজে বের করা

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।

  1. MySQL-এ নির্দিষ্ট কলাম নামে টেবিল খুঁজে বের করা

  2. MySQL-এ GROUP BY HAVING এবং সাবকুয়েরি ব্যবহার করে ডুপ্লিকেট রো বের করা

  3. MySQL-এ MD5() ফাংশন ব্যবহার করে পাসওয়ার্ডের হ্যাশ ভ্যালু আপডেট করা

  4. MySQL-এ CONCAT ব্যবহার করে LIKE কোয়েরিতে 와일্ডকার্ড যোগ করা