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

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

Шаги:
  1. Откройте редактор SQL и подключитесь к базе данных.

    Подключитесь с помощью учетной записи, имеющей права доступа для удаления из таблицы.

  2. Ниже приведены примеры запросов, которые удаляют данные из каждой поддерживаемой базы данных:
    • В этом примере удаляются значения из таблицы 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');
      
    • В этом примере удаляются значения из таблицы базы данных SQLite на основе пространственного фильтра:
      DELETE FROM sensitive_areas WHERE names
      (SELECT sa.names 
       FROM sensitive_areas sa, hazardous_sites hs
       WHERE st_overlaps (sa.zone, st_buffer (hs.location,.01)) = 1);
      
    • В 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);
      
5/25/2014