根据其他列的数据更新MySQL列

时间:2015-09-29 15:52:55

标签: mysql sql-update

我有一个名为TICKET的表。票证中的列中有两个日期字段:

TICKET
----------------------------------------
TICKDATE             | ELSDATE     | ...
---------------------+-------------+----
yyyy-mm-dd hh:mm:ss    yyyy-mm-dd

这两个日期应该始终相同。

我有一系列日期(从7/1到当前),其中ELSDATE为空。我刚刚开始使用sql脚本,我不知道如何更新一列等于另一列。我正在运行一次更新一天的当前脚本是:

update TICKET ELSDATE="yyyy-mm-dd" where date(TICKDATE)="yyyy-mm-dd"

我认为我可以做类似的事情:

update TICKET where ELSDATE="???" date(TICKDATE)<date("2015-09-29")

3 个答案:

答案 0 :(得分:3)

如果要在2015年9月29日之前TICKDATE所在的同一行中将ELSDATE的每个值设置为TICKDATE的值,请使用:

UPDATE TICKET SET ELSDATE = TICKDATE where TICKDATE < "2015-09-29"

答案 1 :(得分:2)

是的:

merge([1, 2, 3, 4], [5, 6, 7, 8])();

答案 2 :(得分:1)

您可以在一个查询中执行所有更新,这样您就不必每天都做一次。该查询将每行ELSDATE更改为等于TICKDATE

UPDATE TICKET SET ELSDATE = TICKDATE;

要仅更新ELSEDATE为空的行,您可以使用。

UPDATE TICKET SET ELSDATE = TICKDATE WHERE ELSDATE IS NULL;

要更改2个日期之间的行,请使用BETWEEN子句。

UPDATE TICKET SET ELSDATE = TICKDATE WHERE TICKDATE BETWEEN '2015-07-01' AND CURDATE();