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

MySQL-এ isMarried = 0 olan সারি গোষ্ঠী করে (GROUP BY) ক্লায়েন্ট অনুযায়ী বের করা

GROUP BY + HAVING শর্ত

একই ClientId-র জন্য একাধিক সারি থাকলে, যেসব ClientId-র সব সারিতে isMarried = 0 (অবিবাহিত) তা বের করতে GROUP BY ClientId HAVING isMarried = 0 ব্যবহার করুন (MySQL-এ নন-এগريغেটেড কলাম HAVING-এ 허용)।

উদাহরণ

mysql> CREATE TABLE DemoTable1344 (
    SequenceId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientId INT, isMarried TINYINT(1)
);

mysql> INSERT INTO DemoTable1344 (ClientId, isMarried) VALUES 
(4567, 0), (9876, 0), (5432, 1), (4567, 1), (9873, 0);

mysql> SELECT * FROM DemoTable1344;

কুয়েরি: শুধু অবিবাহিত (isMarried=0) ক্লায়েন্টের প্রথম সারি

mysql> SELECT SequenceId, ClientId, isMarried
FROM DemoTable1344
GROUP BY ClientId
HAVING isMarried = 0;

ফলাফল

+------------+----------+-----------+
| SequenceId | ClientId | isMarried |
+------------+----------+-----------+
| 1          | 4567     | 0         |
| 2          | 9876     | 0         |
| 5          | 9873     | 0         |
+------------+----------+-----------+

ব্যাখ্যা: ClientId 4567-র দুটি সারি আছে (0 এবং 1)। MySQL-এ GROUP BY ClientId দিয়ে প্রথম সারি (SequenceId=1) পিক হয়েছে এবং HAVING isMarried=0 পাস করেছে। কিন্তু এটি অনির্দিষ্ট আচরণ (non-deterministic) — স্ট্রিক্ট মোডে (ONLY_FULL_GROUP_BY) এরর দেবে। সঠিক পদ্ধতিতে MIN(SequenceId) বা সাবকুয়েরি ব্যবহার করা উচিত।

  1. MySQL-এ নির্দিষ্ট কলামের মান অনুযায়ী রো গণনা করা

  2. MySQL কোয়েরি কলাম মান রিপ্লেস করার জন্য

  3. MySQL-এ GROUP_CONCAT() এবং ORDER BY ব্যবহার করে কলাম ভ্যালু অনুযায়ী রো গ্রুপ করে অ্যারে বানানো

  4. MySQL-এ ভ্যালু ০ হলে অন্য কলাম থেকে ডেটা সিলেক্ট করা