Microsoft वर्तमान में इस सिंटैक्स की अनुमति देता है।
SELECT *
FROM ( VALUES (1) ) AS g(x)
WHERE EXISTS (
SELECT *
FROM ( VALUES (1),(1) )
AS t(x)
WHERE g.x = t.x
HAVING count(*) > 1
);
ध्यान दें कि खंड GROUP BY
में कोई भी नहीं है EXISTS
, यह मान्य ANSI SQL है। या यह केवल एक कार्यान्वयन विवरण को उजागर कर रहा है।
संदर्भ के लिए, PostgreSQL में इसी सिंटैक्स की अनुमति नहीं है।
त्रुटि: कॉलम "tx" को ग्रुप BY क्लॉज में प्रकट होना चाहिए या एक समग्र फ़ंक्शन में उपयोग किया जाना चाहिए
लेकिन इस वाक्यविन्यास की अनुमति है ..
SELECT *
FROM ( VALUES (1) ) AS g(x)
WHERE EXISTS (
SELECT 1 -- This changed from the first query
FROM ( VALUES (1),(1) )
AS t(x)
WHERE g.x = t.x
HAVING count(*) > 1
);
और इस सिंटैक्स की अनुमति है।
SELECT *
FROM ( VALUES (1) ) AS g(x)
WHERE EXISTS (
SELECT *
FROM ( VALUES (1),(1) )
AS t(x)
WHERE g.x = t.x
GROUP BY t.x -- This changed from the first query
HAVING count(*) > 1
);
चैट में @ErikE से बातचीत से सवाल उठता है