WHERE vs HAVING: সারি ফিল্টার vs গ্রুপ ফিল্টার
- WHERE: 개별 সারি (row) ফিল্টার করে। এগრিগেট ফাংশন (SUM, COUNT ইত্যাদি) ব্যবহার করা যায় না।
- HAVING: গ্রুপ বা এগরিগেট ফলাফল ফিল্টার করে। এগরিগেট ফাংশন ব্যবহার করা যায়।
উদাহরণ টেবিল
mysql> CREATE TABLE WhereDemo (Price INT); mysql> INSERT INTO WhereDemo VALUES (100), (200), (300), (400);
HAVING সহ এগরিগেট
mysql> SELECT SUM(Price) FROM WhereDemo HAVING SUM(Price) > 500; +------------+ | SUM(Price) | +------------+ | 1000 | +------------+
WHERE সহ এগরিগেট (এরর)
mysql> SELECT SUM(Price) FROM WhereDemo WHERE SUM(Price) > 200; ERROR 1111 (HY000): Invalid use of group function
নियम: গ্রুপিং (GROUP BY) করার আগে ফিল্টার = WHERE; গ্রুপিং/এগরিগেশন পর ফিল্টার = HAVING।