2017-04-06 83 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 
相關問題