MySQL テーブルを更新したい。UPDATE 機能を使用します。
私のコラムは次のとおりです。
time_started, time_in_1, time_in_2, time_in_3.
私が望むのは、time_started
null でない場合は次の列に移動しますが、null でない場合time_in_1
は次の列に移動するなどです。誰もこれについて助けることができますか?
MySQL テーブルを更新したい。UPDATE 機能を使用します。
私のコラムは次のとおりです。
time_started, time_in_1, time_in_2, time_in_3.
私が望むのは、time_started
null でない場合は次の列に移動しますが、null でない場合time_in_1
は次の列に移動するなどです。誰もこれについて助けることができますか?
UPDATE table
SET time_started = IFNULL(time_started, newValue, time_started),
time_1 = IFNULL(time_1, newValue, time_1),
time_2 = IFNULL(time_2, newValue, time_2);
これにより、各列が newValue の場合に設定されNULL
、それ以外の場合は元の値が保持されます。
まず、これは非常に奇妙な (そしてあまり拡張できない) テーブル構造のように思えることから始めましょう。必要な SQL は正確には美しくありません。数列を超えて SQL を拡張しても、誰も幸せにはなりません :)
とはいえ、これはあなたが望むことをするはずです。
SET @value := '2001-01-01';
UPDATE myTable SET
time_in_3 = IF(time_started IS NOT NULL AND
time_in_1 IS NOT NULL AND
time_in_2 IS NOT NULL AND
time_in_3 IS NULL, @value, time_in_3),
time_in_2 = IF(time_started IS NOT NULL AND
time_in_1 IS NOT NULL AND
time_in_2 IS NULL, @value, time_in_2),
time_in_1 = IF(time_started IS NOT NULL AND
time_in_1 IS NULL, @value, time_in_1),
time_started = IF(time_started IS NULL, @value, time_started)
WHERE id=1;