マイクロソフトでは現在、この構文を許可しています。
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との会話から質問が発生する