Microsoft şu anda bu sözdizimine izin vermektedir.
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
Bu EXISTS
maddede, ANSI SQL geçerli olmadığına dikkat edin . Yoksa sadece bir uygulama detayını ortaya çıkarıyor mu?
Referans olarak, bu aynı sözdiziminin PostgreSQL'de kullanılmasına izin verilmez.
HATA: "tx" sütunu GROUP BY deyiminde görünmeli veya toplama işlevinde kullanılmalıdır
Ancak bu sözdizimine izin verilir.
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
);
Ve bu sözdizimine izin verilir.
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
);
Soru , @ErikE ile sohbette bir sohbetten kaynaklanıyor