नहीं।
उन्हें सह-अस्तित्व में नहीं होना चाहिए, जैसा कि इस तथ्य से साबित होता है कि ओरेकल में निम्नलिखित क्वेरी काम करती है:
select * from dual having 1 = 1;
इसी तरह, PostgreSQL में निम्नलिखित क्वेरी काम करती है:
select 1 having 1 = 1;
तो आवश्यकता having
नहीं है group by
।
चल रहा है लागू किया के बाद एकत्रीकरण चरण और यदि आप समस्त परिणाम फ़िल्टर करना चाहते इस्तेमाल किया जाना चाहिए। तो रिवर्स सच नहीं है, और निम्नलिखित काम नहीं करेगा:
select a, count(*) as c
from mytable
group by a
where c > 1;
आप प्रतिस्थापित करने की आवश्यकता where
के साथ having
इस प्रकार, इस मामले में:
select a, count(*) as c
from mytable
group by a
having c > 1;
NB निम्नलिखित क्वेरी प्रपत्र भी काम करेगा:
select *
from (
select a, count(*) as c
from mytable
group by a
)
where c > 1;
आप देख सकते हैं कि उपयोग having
करना इस अंतिम प्रश्न का एक संक्षिप्त संस्करण है।
सारांश में, having
लागू किया जाता है के बादgroup by
चरण जबकि where
लागू किया जाता है से पहलेgroup by
चरण।
SELECT MIN(a) AS mina, MAX(a) As maxa FROM mytable HAVING MIN(a) < MAX(a);