2017-06-14 39 views
0

我在Postgres中创建了一个限制结果数量的查询,但由于某种原因,我的限制子句显示的是我要求的少一个结果。这里是查询:Postgres限制显示错误的行数

select articles.title, articles.slug, count.views 
from articles, 
    (select path, count(path) as views 
     from log 
     where status = '200 OK' 
     and path != '/' 
     group by path 
     order by views desc limit 3 
) count 
WHERE articles.slug LIKE LTRIM(count.path, '/article/'); 

但是当我运行它时,我只得到前2行。如果我将3改为4,我会得到前3行,依此类推。有什么建议么?

+1

在子查询中选择的行由where子句过滤掉。 –

+0

如果你不使用通配符,你为什么使用'LIKE'?这与使用'articles.slug = LTRIM(count.path,'/ article /');' –

+0

'的内部连接基本相同当我删除限制时,将显示所有6个相关行,并且如果使用限制3偏移量1按照要求返回前3行,所以我相信戈登的回答是正确的。 –

回答

0

当我删除限制,显示所有6相关的行,如果我使用限制3偏移量1返回前3行所要求的,所以我相信戈登的答案是正确的。 - Gerry de Caires