同じ結果になるはずだと思った2つのクエリを作成しました。
SELECT COUNT(*) FROM (
SELECT DISTINCT ON (id1) id1, value
FROM (
SELECT table1.id1, table2.value
FROM table1
JOIN table2 ON table1.id1=table2.id
WHERE table2.value = '1')
AS result1 ORDER BY id1)
AS result2;
SELECT COUNT(*) FROM (
SELECT DISTINCT ON (id1) id1, value
FROM (
SELECT table1.id1, table2.value
FROM table1
JOIN table2 ON table1.id1=table2.id
)
AS result1 ORDER BY id1)
AS result2
WHERE value = '1';
唯一の違いは、一方は SELECT DISTINCT ON 内に WHERE 句があり、もう一方はその外側の SELECT COUNT 内にあることです。しかし、結果は同じではありませんでした。この場合、WHERE 句の位置によって違いが生じる理由がわかりません。誰でも説明できますか?または、この質問を表現するより良い方法はありますか?