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

AnalyticDB:DELETE

最終更新日:May 13, 2025

DELETE 文を実行して、テーブルデータを削除できます。

使用方法

  • DELETE 文を実行するテーブルには、プライマリキーが必要です。

  • テーブルのエイリアスを使用して DELETE 文を実行することはできません。

  • テーブルまたはパーティション全体からデータを削除する場合は、DELETE 文ではなく、TRUNCATE TABLE 文または TRUNCATE TABLE PARTITION 文を使用することをお勧めします。詳細については、「TRUNCATE TABLE」をご参照ください。

  • 複数のテーブルからデータを削除する場合、1 つのテーブルに対してのみ SQL 文を実行できます。

構文

1 つのテーブルからデータを削除する場合、テーブルからデータをクエリし、WHERE 句で指定された条件を満たすデータを削除できます。複数のテーブルからデータを削除する場合、SQL 文を実行して、結合された複数のテーブルからデータをクエリし、WHERE 句で指定された条件を満たすデータを 1 つのテーブルから削除できます。

1 つのテーブルからデータを削除する

DELETE FROM table_name
[ WHERE condition ]        

複数のテーブルからデータを削除する

重要

複数のテーブルからデータを削除できるのは、V3.2.0.0 以降の AnalyticDB for MySQL クラスターの場合のみです。

AnalyticDB for MySQL クラスタのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、構成情報 セクションの クラスター情報 ページに移動します。

DELETE table_name1
FROM table_name1 [INNER JOIN | LEFT JOIN | RIGHT JOIN] table_name2 ON table_name1.column1 = table_name2.column1
[WHERE where_condition]

  • name 列が Alex であるデータを customer テーブルから削除します。

    DELETE FROM customer WHERE customer_name='Alex';                  
  • age 列が 18 未満のデータを customer テーブルから削除します。

    DELETE FROM customer WHERE age<18;                
  • customer テーブルの id 列と orders テーブルの id 列に基づいて、結合されたテーブルからデータをクエリし、age 列が 18 であるデータを customer テーブルから削除します。

    DELETE customer FROM customer JOIN orders ON customer.id = orders.id WHERE customer.age = 18;

一般的なエラーとトラブルシューティング

テーブルからデータを削除した後、ストレージ容量が減少しないのはなぜですか?

原因: DELETE 操作は非同期です。DELETE 文を実行してテーブルからデータを削除した後、ストレージ容量はすぐに減少しません。

解決策: DELETE 文を実行した後、BUILD ジョブをトリガーします。

AnalyticDB for MySQL クラスターが特定の条件を満たした後、BUILD ジョブが自動的にトリガーされる 場合があります。また、BUILD ジョブを手動でトリガーすることもできます。