WHERE
संसाधित की जा रही मूल तालिका में डेटा का चयन करने के लिए उपयोग किया जाता है।
HAVING
क्वेरी द्वारा निर्मित परिणाम सेट में डेटा को फ़िल्टर करने के लिए उपयोग किया जाता है। इसका मतलब है कि यह SELECT
. में कुल मानों और उपनामों को संदर्भित कर सकता है खंड।
उदाहरण के लिए, लिख सकते हैं:
SELECT t1.val - t2.val diff
FROM t1 JOIN t2 ON (some expression)
HAVING diff > 10
यह WHERE
का उपयोग करके काम नहीं करेगा क्योंकि diff
एक उपनाम है, मूल तालिका स्तंभों में से एक नहीं है। आप इसके बजाय लिख सकते हैं:
SELECT t1.val - t2.val diff
FROM t1 JOIN t2 ON (some expression)
WHERE t1.val - t2.val > 10
लेकिन फिर उसे सभी घटाव दो बार करने पड़ सकते हैं:एक बार चयन करने के लिए, और फिर से परिणाम सेट तैयार करने के लिए।