すべてのプロダクト
Search
ドキュメントセンター

Lindorm:DELETE

最終更新日:Feb 12, 2026

DELETE 構文を使用して、ワイドテーブルからデータを削除するか、または時系列テーブルから指定された条件を満たす時系列を削除できます。

適用エンジンおよびバージョン

  • DELETE 構文は LindormTable および LindormTSDB で使用できます。

  • LindormTSDB バージョン 3.4.19 以降では、タイムライン削除がサポートされています。現在のバージョンの確認またはアップグレード方法については、「バージョンガイド」および「マイナーバージョン更新」をご参照ください。

  • DELETE 構文は LindormTable のすべてのバージョンでサポートされています。

構文

delete_statement ::=  DELETE FROM table_identifier
                      WHERE where_clause
where_clause     ::=  relation ( AND|OR relation )*
relation         ::=  column_name operator term
                      | '(' column_name ( ',' column_name )* ')' operator tuple_literal
operator         ::=  '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | IS NOT?  NULL | LIKE

注意事項

重要

DELETE 文を使用してデータを削除する前に、以下の点に注意してください。

LindormTable の場合:

  • `2.8.2.26` より前のバージョンの `LindormTable` では、DELETE 文は単一行の削除のみをサポートしています。つまり、行を削除するには、フィルター条件ですべてのプライマリキー列を指定する必要があります。指定しない場合、エラーが発生します。`LindormTable 2.8.2.26` 以降では、バッチ削除がサポートされています。この機能は、デフォルトでは無効になっています。この機能を使用するには、`Lindorm` のテクニカルサポートにご連絡ください。現在のバージョンを表示またはスペックアップするには、「LindormTable バージョンガイド」および「マイナーバージョンの更新」をご参照ください。

  • DELETE 文を実行すると、Lindorm は削除対象のデータに対して削除マーカーを追加します。削除操作の前にデータをクエリすることはありません。そのため、削除対象の行が存在するかどうかに関係なく、削除操作は成功します。

  • UPSERT 文を使用してデータを書き込み、ヒントワードを使用してデータのバージョンとして将来のタイムスタンプを指定した場合、DELETE 操作を実行しても、DELETE 文が成功したとしても、実際にはデータは削除されません。詳細については、「マルチバージョン データ管理」をご参照ください。

時系列エンジンの場合:

  • DELETE 文の `WHERE` 句では、フィルター条件は `TAG` 列にのみ指定できます。

  • DELETE 操作は、特定のデータレコードを削除できません。これは、TAG フィルター条件を満たす時系列内のすべてのデータを削除します。

削除条件(where_clause)

LindormTable および LindormTSDB の両方で、削除条件(where_clause)を指定できます。

LindormTable

  • 2.7.5 より前の LindormTable:WHERE 句にはすべてのプライマリキー列に対する等価フィルター条件(column_name=value)を含める必要があり、単一行のデータのみを削除できます。

  • 2.7.5 以降の LindormTable(バッチ削除が無効の場合):WHERE 句にはすべてのプライマリキー列に対する等価フィルター条件(column_name=value)を含める必要があり、単一行のデータのみを削除できます。

  • LindormTable 2.7.5 以降で、バッチ削除が有効になっている場合、WHERE 句で幅広いフィルター条件をサポートします。これは、SELECT 文の WHERE 句でサポートされる条件と同様です。

    重要

    DELETE 操作中にタイムアウトなどのエラーが発生すると、一部のデータのみが削除される可能性があります。

LindormTSDB

where_clause には TAG 列を指定する必要があります。削除操作により、TAG フィルター条件を満たす時系列のすべてのデータが削除されます。

関係式(relation)

時系列テーブルから時系列を削除するために DELETE 構文を使用する場合、relation パラメーター内の column_identifier フィールドは VARCHAR(TAG)列である必要があります。

テーブルスキーマおよびそのデータは次のとおりとします。

-- sensor という名前のテーブルを作成します。
CREATE TABLE sensor (
  p1 INTEGER NOT NULL, 
  p2 INTEGER NOT NULL, 
  c1 VARCHAR, 
  c2 VARCHAR,
  PRIMARY KEY(p1, p2)
);

-- テーブルにデータを挿入します。
UPSERT INTO sensor(p1, p2, c1, c2) VALUES (1,1,'a','a'),(2,2,'b','b'),(3,3,'c','c');

単一行データの削除

DELETE FROM sensor WHERE p1 = 1 AND p2 = 1;

結果の確認

SELECT * FROM sensor; 文を実行して、データが削除されたことを確認します。期待される出力は次のとおりです。

+------+------+------+------+
| p1   | p2   | c1   | c2   |
+------+------+------+------+
|    2 |    2 | b    | b    |
|    3 |    3 | c    | c    |
+------+------+------+------+

複数行データの一括削除

重要

この機能はパブリックプレビュー段階です。ご利用になるには、Lindorm テクニカルサポート(DingTalk ID:s0s3eg3)までお問い合わせください。

DELETE FROM sensor WHERE c1 > 'b' OR p2 > 1;

結果の確認

SELECT * FROM sensor; 文を実行して、データが削除されたことを確認します。