PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak używać ST_Intersects w klauzuli WHERE?

Najprawdopodobniej próbujesz użyć ST_Intersects z aliasem wyrażenia, a nie kolumną lub geometrią. Twoja logika jest odwrócona:musisz najpierw przeanalizować i zrzucić geometrie ze swojego zbioru obiektów, a następnie zastosować filtr, a nie odwrotnie:

WITH datasource (feature) AS (
 SELECT json_array_elements('{json_string}'::json->'features')  
)
SELECT 
  ST_AsGeoJSON(ST_Union(ST_GeomFromGeoJSON(feature->>'geometry'))),
  ST_AsText(ST_Union(ST_GeomFromGeoJSON(feature->>'geometry')))
FROM datasource
WHERE NOT ST_Intersects(ST_GeomFromGeoJSON(feature->>'geometry'),'{a geometry}');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekazywanie tabeli jako parametru

  2. WYBIERZ ISTNIEJE vs. LIMIT 1

  3. Spring Boot - To samo repozytorium i ta sama jednostka dla różnych baz danych

  4. Kolumna postgreSQL nie istnieje, gdzie foo jest wartością

  5. Jak połączyć tylko jeden rząd w łączonym stole z postgresem?