GROUP BY ... HAVING COUNT(DISTINCT ...) = N প্যাটার্ন
MySQL-এ নির্দিষ্ট কিছু ID-র জন্য যেখানে একটি কলামের মান একই (duplicate) আছে, সেটি খুঁজে বের করতে GROUP BY ... HAVING ব্যবহার করা হয়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Value INT); mysql> INSERT INTO DemoTable(Value) VALUES(600), (600), (800), (800);
সব রেকর্ড
+----+-------+ | Id | Value | +----+-------+ | 1 | 600 | | 2 | 600 | | 3 | 800 | | 4 | 800 | +----+-------+
কোয়েরি: ID 1 ও 2-র জন্য একই Value খুঁজা
mysql> SELECT Value FROM DemoTable tbl WHERE Id IN(1,2) GROUP BY Value HAVING COUNT(DISTINCT Id) = 2;
+-------+ | Value | +-------+ | 600 | +-------+
ব্যাখ্যা
WHERE Id IN(1,2)— শুধু ID ১ ও ২ বিবেচনা।GROUP BY Value— Value অনুযায়ী গ্রুপ।HAVING COUNT(DISTINCT Id) = 2— সেই গ্রুপে ২টি ভিন্ন ID থাকলে (অর্থাৎ দুটি ID-র Value একই)।
ব্যবহার ক্ষেত্র
এই প্যাটার্ন "একই মান যেগুলো নির্দিষ্ট N টি রোতে আছে" খুঁজতে ব্যবহৃত হয় (Relational Division)।