タイムスタンプ列を持つmysqlテーブルがあります。ここで実行したいのは、日時列のタイムスタンプをより新しいものにすることです。
たとえば、最新のレコードが10時間前のものである場合。各行の日時に10時間を追加したいと思います。そのアクションの後、最新のタイムスタンプはvalue = now()になります。
これは1つのクエリで可能ですか?
これは現在動作します(テスト済み):
SELECT MAX(`timestamp`) FROM yourTable INTO @a_variable;
UPDATE yourTable
SET `timestamp` = DATE_SUB(`timestamp`, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), @a_variable) SECOND)
詳細については、マニュアルを参照してください
UPDATE クエリでサブクエリを使用してみましたか? (私はこれをテストしていませんが、うまくいくはずです)
UPDATE table
SET timestamp = ADDTIME(timestamp,
(SELECT TIMEDIFF(NOW(), timestamp)
FROM table
ORDER BY timestamp DESC
LIMIT 1))