2017-04-06 92 views
0

我只是想知道,为什么一个子查询返回多个值,所以我做了这个查询:子查询计数() - 列必须出现在GROUP BY子句

SELECT id, 
    (SELECT Count(tags[i]) 
     FROM generate_subscripts(tags, 1) AS i 
     WHERE tags[i]='oneway') as oneway_string 

    FROM planet_osm_ways 
    WHERE 'oneway' = ANY(tags) 
    HAVING 
     (SELECT Count(tags[i]) 
      FROM generate_subscripts(tags, 1) AS i 
      WHERE tags[i]='oneway') > 1 

应该找到的所有出现'单向'在tags数组中并统计它们。

[42803] ERROR: column "planet_osm_ways.id" must appear in the GROUP BY clause 
       or be used in an aggregate function Position: 8 

回答

0

你应该改变HAVINGWHERE因为没有组上你可以申请HAVING过滤器,而不是你想用WHERE过滤器适用于每一行。

SELECT id, 
(SELECT Count(tags[i]) 
    FROM generate_subscripts(tags, 1) AS i 
    WHERE tags[i]='oneway') as oneway_string 

FROM planet_osm_ways 
WHERE 'oneway' = ANY(tags) 
    AND 
    (SELECT Count(tags[i]) 
     FROM generate_subscripts(tags, 1) AS i 
     WHERE tags[i]='oneway') > 1 
相关问题