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 では、サブクエリで使用するテーブルまたはビューの変更がサポートされません。そのため、クエリを 2 つの部分に分け、SELECT で一時テーブルを作成し、その一時テーブルを使用してデータを削除します。
      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