如何查询PostgreSQL数据库列是否出现多次项目

时间:2013-11-19 23:29:23

标签: database postgresql

我想知道,如何获取在查询中多次表示的值。

查询:

SELECT
    accumulation.partnumber,
    municipality.bez_gem
FROM accumulation, municipality
WHERE ST_Intersects(polygon_accumulation, municipality.geom)
        ORDER BY partnumber

bez_gem是市政府的名称,其数量为累积多边形的ID。 交叉点位于多边形之间。

结果:

 partnumber |         bez_gem          
------------+--------------------------
          1 | Altdorf b.Nürnberg
          1 | Berg b.Neumarkt i.d.OPf.
          2 | Berg b.Neumarkt i.d.OPf.
          2 | Altdorf b.Nürnberg
          3 | Berg b.Neumarkt i.d.OPf.
          4 | Berg b.Neumarkt i.d.OPf.
          4 | Altdorf b.Nürnberg

所以我的问题是如何得到这样的东西?

 partnumber | more_than_once          
------------+----------------
          1 | t
          2 | t
          3 | f
          4 | t

我看到很多MySQL的解决方案,但不是PostgreSQL。

修改

表积累

partnumber integer NOT NULL,
polygon_accumulation geometry(polygon, 31468)

表自治市

gid integer NOT NULL DEFAULT nextval('municipality_gid_seq'::regclass),
bez_gem varchar(60),
geom geometry(MultiPolygon, 31468)

1 个答案:

答案 0 :(得分:1)

这应该这样做:

select partnumber,
       count(*) > 1 as more_than_once
FROM accumulation, municipality
WHERE ST_Intersects(polygon_accumulation, municipality.geom)
group by partnumber
order by partnumber

(我发现你对这两个表没有正确的JOIN条件感到有些困惑,但我认为这是通过ST_Intersect()函数完成的)