我想知道,如何获取在查询中多次表示的值。
查询:
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)
答案 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()
函数完成的)