Удаление значений из пространственного столбца ST_Geometry

Выражение SQL DELETE удаляет строки данных из указанной таблицы или представления.

Шаги:
  1. Ниже приведены примеры запросов, которые удаляют данные из каждой поддерживаемой базы данных:
    • В этом примере удаляются значения из базы геоданных на Oracle с помощью пространственного типа, основанного на пространственном фильтре:
      DELETE FROM sensitive_areas WHERE names
      (SELECT sa.names 
      FROM sensitive_areas sa, hazardous_sites hs
      WHERE sde.st_overlaps (sa.zone, sde.st_buffer (hs.location,.01)) = 1);
      
    • В этом примере удаляются значения из базы геоданных на PostgreSQL с помощью пространственного типа, основанного на пространственном фильтре:
      DELETE FROM sensitive_areas 
      WHERE names EXISTS (SELECT sa.names
      FROM sensitive_areas sa, hazardous_sites hs
      WHERE st_overlaps (sa.zone, st_buffer (hs.location,.01)) = 't');
      
    • В IBM DB2 используйте следующее выражение:
      DELETE FROM sensitive_areas 
      WHERE names (SELECT sa.names 
      FROM sensitive_areas sa, hazardous_sites hs 
      WHERE db2gse.st_overlaps (sa.zone, db2gse.st_buffer (hs.location,.01)) = 1);
      
    • Informix не поддерживает изменение таблицы или представления, использованной в подзапросе. Поэтому разбейте запрос на две части: выбор во временную таблицу и удаление с ее помощью.
      SELECT sa.name FROM
      sensitive_areas sa, hazardous_sites hs
      WHERE st_overlaps (sa.zone, st_buffer (hs.location,.01)) 
      INTO TEMP tempTable;
      
      DELETE FROM sensitive_areas WHERE name IN (select name from tempTable);
      
9/11/2013