コンテンツにスキップ

LOOKUPの述語DELETE

LOOKUPテーブルのDELETEは、主キーの等価条件だけでなく、一般の述語をWHERE句で使用できます。 条件に一致するすべての行が削除されます。

構文

DELETE FROM table_name
 WHERE predicate;

WHERE句なしで実行すると、LOOKUPテーブルの全行が削除されます。

サポートする条件の例

-- 一般列の条件
DELETE FROM device_lookup
WHERE status = 'EXPIRED';

-- 日付と範囲の条件
DELETE FROM device_lookup
WHERE updated_at < TO_DATE('2026-01-01 00:00:00')
   OR score < 10;

-- JSONパス条件
DELETE FROM device_lookup
WHERE meta->'$.region' = 'kr'
  AND JSON_EXTRACT_INTEGER(meta, '$.level') < 2;

条件のサポート範囲

条件対応
pk_col = valueO
non_pk_col = valueO
<, <=, >, >=, <>O
BETWEENO
IN, NOT INO
LIKE, NOT LIKEO
AND, OR, NOTO
IS NULL, IS NOT NULLO
TO_DATE(...)による日付条件O
JSONの->, JSON_EXTRACT_*, JSON_IS_VALIDO
WHERE句なしの全件削除O

運用上の注意事項

一般述語のDELETEは、条件に一致するすべての行を削除します。 本番データでは、先に同じ条件で対象範囲を確認してから実行します。

SELECT COUNT(*)
FROM device_lookup
WHERE status = 'EXPIRED';

DELETE FROM device_lookup
WHERE status = 'EXPIRED';

関連文書

最終更新日