1

MySQL テーブルを更新したい。UPDATE 機能を使用します。

私のコラムは次のとおりです。

time_started, time_in_1, time_in_2, time_in_3.

私が望むのは、time_startednull でない場合は次の列に移動しますが、null でない場合time_in_1は次の列に移動するなどです。誰もこれについて助けることができますか?

4

2 に答える 2

0
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、それ以外の場合は元の値が保持されます。

于 2013-02-07T18:59:58.153 に答える
0

まず、これは非常に奇妙な (そしてあまり拡張できない) テーブル構造のように思えることから始めましょう。必要な 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;

実際の動作を示す SQLfiddle

于 2013-02-07T19:38:00.137 に答える