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"열이 GROUP 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와의 대화 에서 질문이 발생합니다.