コンテンツにスキップ

LOOKUPの述語UPDATE

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

構文

UPDATE table_name
   SET column_name = expression [, column_name = expression ...]
 WHERE predicate;

サポートする条件の例

-- 一般列の条件
UPDATE device_lookup
SET status = 'ACTIVE'
WHERE site = 'SEOUL' AND status = 'READY';

-- 範囲と文字列の条件
UPDATE device_lookup
SET score = score + 10
WHERE score BETWEEN 10 AND 80
  AND note LIKE 'sensor-%';

-- JSONパス条件
UPDATE device_lookup
SET meta = JSON_SET(meta, '$.state', 'active')
WHERE meta->'$.region' = 'kr'
  AND JSON_EXTRACT_INTEGER(meta, '$.level') >= 3;

SET句の右辺の式は、現在の行の値を参照できます。

UPDATE device_lookup
SET score = score + 1
WHERE group_name IN ('A', 'B');

条件のサポート範囲

条件対応
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

制約

  • 主キー列自体はSET句で変更できません。
  • 条件に一致する行が複数あれば、複数行が更新されます。
  • JSONパス文字列は単一引用符('$.key')で記述します。二重引用符はSQL識別子として解釈されます。
  • 数値のJSON値を比較する場合は、JSON_EXTRACT_INTEGERJSON_EXTRACT_DOUBLEなどの型別関数を推奨します。

関連文書

最終更新日