0
我做了,我认为应该有相同的结果,两个查询:PostgreSQL的where子句行为
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';
是一个唯一的区别有WHERE子句中SELECT DISTINCT ON,其他之外的,但里面SELECT COUNT。但结果并不相同。我不明白为什么WHERE子句的位置应该在这种情况下有所作为。谁能解释一下?或者有更好的方法来解释这个问题吗?
即使您的原始严重格式化的帖子也有'AS result2 WHERE table2.value ='1';'在第二个查询中与您的描述不匹配:唯一区别在于SELECT DISTINCT ON中的WHERE子句,另外一个,但在SELECT COUNT内。你能解决你的疑问吗? – mys
我不明白你为什么要求我修复这些查询。如果我知道他们有什么问题,我不会寻求帮助。 – user1625423
你的第二个查询有一个'WHERE'子句,但第一个没有。因此,他们会有不同的结果。 –