PostgreSQL(バージョン9.1を使用しています)では、1つのクエリで列の値を別の列の値で一括更新できますが、他の列の値がnullの場合は、3番目の列の値を使用します。 3番目の列が現在の日時を使用できない場合(すべての列の型はtimestamp
です)
変える必要がある
columnA columnB columnC null foo bar null null baz null null null
に
columnA columnB columnC foo foo bar baz null baz quz null null
ここで、quz
は現在の日時です。
COALESCE()
function を使用して更新を実行できます。
UPDATE ...
SET columnA = COALESCE(columnB, columnC, now());
COALESCE
は、指定したリストの最初のnull以外の値を返します。
NULL値ではなく COALESCE
を使用してデフォルトを提供できます。これは可変関数であるため、任意の数のパラメーターを取ることができます。戻り値は、最初のNULL以外のパラメータになります(存在しない場合でも、NULLを返します)。
これを使用すると、UPDATE
は次のようになります。
UPDATE your_table
SET columnA = COALESCE(columnB, columnC, 'quz');