PostgreSQL では、そしておそらく他のデータベースでは、以下を使用して「テーブル」をインプレースで構築できます (やや不器用です) UNION ALL
:
UPDATE table
SET update_column = temp.value
FROM (
SELECT 'foo' AS id, 'bar' AS value
UNION ALL
SELECT 'baz' AS id, 'qux' AS value
UNION ALL
SELECT 'et' AS id, 'cetera' AS value
) temp
WHERE key_column = temp.id
AND Criteria_column = 'Criteria';
最近のバージョンの PostgreSQL では、インプレース テーブルを作成するための構文が改善されました。
UPDATE table
SET update_column = temp.value
FROM (
VALUES ('foo', 'bar'), ('baz', 'qux'), ('et', 'cetera')
) temp (id, value)
WHERE key_column = temp.id
AND Criteria_column = 'Criteria';