フィールドx、y、zがid = xxのフィールドを更新する更新ステートメントがあります。更新フィールドがNULLでない場合
テーブルには、いくつかの異なるx_created_datetimeフィールドがあります(レコードの異なる部分には、異なる人によって維持/入力されています)。私はnullの場合はこのフィールドを更新する単一のクエリを記述したいと思いますが、nullでない場合はそれを残してください。
それでは、私が持っていることは次のとおりです。
UPDATE newspapers
SET scan_notes = "data",
scan_entered_by = "some_name",
scan_modified_date = "current_unix_timestamp"
WHERE id = X
私は必要なものを以下に追加する方法ですが、それでも常に上記を更新:
scan_created_date = "current_unix_timestamp"
where scan_created_date is null
私は私が行うことができます願っていますこれは、DBへの2番目のトランザクションなし。どのようにこれを達成するための任意のアイデア?
UPDATE newspapers
SET scan_notes = "data",
scan_entered_by = "some_name",
scan_modified_date = "current_unix_timestamp",
scan_created_date = COALESCE(scan_created_date, "current_unix_timestamp")
WHERE id = X
COALESCE
関数は最初の非null値を選ぶ:
を使用して準備された文の中で以下のようにそれを使用することができ :COALESCEは、値のリストに最初の非null値を返すので、scan_created_dateがすでにある場合それは既にそこにある値に設定されます。 nullの場合は、現在のタイムスタンプに設定されます。 –
nullの場合、これはscan_created_dateを更新しませんか?彼はそれがヌルでないところでそれを更新したいと思うように見えます。 – tloach
@tloach - 説明を参照してください。 @ JacobM - すでにそれをやっていた:) – cjk