これはなんとなく説明が難しいですが、postgresql 9.1 テーブル (planet_osm_roads) があります。私のクエリは
SELECT
osm_id, name, highway, way, md5(astext(way)) AS md5
FROM planet_osm_roads
WHERE highway IS NOT NULL
AND md5(astext(way)) IN (
SELECT DISTINCT md5(astext(way))
FROM planet_osm_roads
WHERE highway IS NOT NULL
GROUP BY md5
HAVING count(osm_id) > 1
)
ORDER BY osm_id
結果は
osm_id | name | highway | ...way ... | md5
----------+------+---------------+-------...----...--+----------------------------------
-1641383 | | motorway | 010200...CA96...0 | 04b4336b997e7ea9d99208bd487bbe7d
-1641383 | | motorway | 010200...EC3E...0 | ae945148417ada285130c59277c48a25
-1641383 | | motorway | 010200...7BF6...0 | 5c5a1b8ae40c1b7f24e293a012ad2add
23133731 | | motorway_link | 010200...EC3E...0 | ae945148417ada285130c59277c48a25
31309105 | | motorway | 010200...7BF6...0 | 5c5a1b8ae40c1b7f24e293a012ad2add
49339926 | | motorway | 010200...CA96...0 | 04b4336b997e7ea9d99208bd487bbe7d
(6 rows)
3 つの行 (md5 ハッシュごとに 1 つ) と他の対応する行を保持する結果が必要です。したがって、「ae945148417ada285130c59277c48a25」の有効な行には、「-1641383」と「motorway」または「23133731」と「motorway_link」の osm_id-highway ペアが含まれる可能性があります。どちらも正しいと見なします。
これを解決するにはどうすればよいですか?必要な操作/テクニックはどのように呼び出されますか? だから私は次回のためにそれを何を検索するかを呼ぶ方法を知っています。