- カテゴリ:
DML コマンド - 一般
DELETE¶
オプションの WHERE 句または追加テーブルを使用して、テーブルからデータを削除します。
重要
TRUNCATE TABLE とは異なり、このコマンドは外部ファイルのロード履歴を削除 しません。ステージングされたファイルからテーブルにロードされた行を削除する場合、ファイルを変更して再度ステージングしない限り、そのファイルからデータを再度ロードすることはできません。
構文¶
DELETE FROM <table_name>
[ USING <additional_tables> ]
[ WHERE <condition_query> ]
必須パラメーター¶
テーブル名
行が削除されるテーブルを指定します。
オプションのパラメーター¶
USING 追加テーブル
削除する行を選択するために使用する1つ以上のテーブルを指定します。ターゲットテーブルを繰り返すと、テーブルの自己結合が処理されることに注意してください。
WHERE 条件クエリ
削除する行を選択するために使用するクエリを指定します。このパラメーターを省略すると、テーブル内のすべての行が削除されます(つまり、空のテーブル)が、テーブルは残ります。
使用上の注意¶
USING
句を指定して JOIN に基づいて削除する場合、ターゲットテーブルの行がUSING
テーブルの複数の行と結合する可能性があります。結合された組み合わせのいずれかで DELETE 条件が満たされると、ターゲット行が削除されます。例えば、列
(k number, v number)
のあるテーブルtab1
およびtab2
がある場合:select * from tab1; -------+-------+ k | v | -------+-------+ 0 | 10 | -------+-------+ Select * from tab2; -------+-------+ k | v | -------+-------+ 0 | 20 | 0 | 30 | -------+-------+
次のクエリを実行すると、 tab1
の行は tab2
の両方の行に対して結合されます。
DELETE FROM tab1 USING tab2 WHERE tab1.k = tab2.k
少なくとも1つの結合ペアが条件を満たすため、行は削除されます。その結果、ステートメントの完了後、 tab1
は空になります。
例¶
DELETE FROM tab1 USING tab2 WHERE tab1.key_column = tab2.tab1_key AND tab2.number_column < 10;