根据另一列的数据更新 MySQL 列

Update MySQL column based on another column's data

我有一个名为 TICKET 的 table。在工单的列中有两个日期字段:

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")

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

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

您可以在单个查询中完成所有更新,这样您就不必一天一次地完成它们。查询会将每一行 ELSDATE 更改为等于 TICKDATE

UPDATE TICKET SET ELSDATE = TICKDATE;

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

UPDATE TICKET SET ELSDATE = TICKDATE WHERE ELSDATE IS NULL;

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

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

是的:

UPDATE TICKET 
   SET ELSDATE = TICKDATE 
 WHERE TICKDATE < CURDATE() /* AND ELSDATE IS NULL */