我想更新一个 MySQL 表。使用更新功能。
我的专栏是:
time_started, time_in_1, time_in_2, time_in_3.
我想要的是 where time_started
is not null 然后移动到下一列,但如果time_in_1
也不为 null 移动到下一列,依此类推。有人可以帮忙吗?
我想更新一个 MySQL 表。使用更新功能。
我的专栏是:
time_started, time_in_1, time_in_2, time_in_3.
我想要的是 where time_started
is not null 然后移动到下一列,但如果time_in_1
也不为 null 移动到下一列,依此类推。有人可以帮忙吗?
首先让我说这似乎是一个非常奇怪(而且不是很可扩展)的表结构。所需的 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;
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 if NULL
,否则保留其原始值。