根据其他两个时间戳字段更新日期字段

时间:2020-05-18 18:09:30

标签: mysql sql date sql-update

伙计,我下面是示例表结构,

mysql> SELECT * FROM tbl_test_timestamp;
+----+---------------------+---------------------+---------------------+---------------------+
| id | t1                  | t2                  | date_created        | date_updated        |
+----+---------------------+---------------------+---------------------+---------------------+
| 16 | 2019-01-22 12:47:05 | 2019-03-15 14:50:13 | 2019-01-22 12:47:05 | 2020-05-14 16:11:22 |
| 20 | 2019-01-24 09:35:19 | 2019-03-14 07:12:31 | 2019-01-24 09:35:19 | 2020-05-14 16:11:22 |
| 22 | 2019-01-24 16:46:20 | 2019-01-24 16:46:20 | 2019-01-24 16:45:35 | 2020-05-14 16:11:22 |
| 23 | 2019-01-25 14:03:33 | 2019-04-08 07:48:53 | 2019-01-25 13:55:42 | 2020-05-14 16:11:22 |
+----+---------------------+---------------------+---------------------+---------------------+

我需要将date_updated字段设置为t1或t2,以较大者为准。我需要在超过7百万条记录中运行此查询。

2 个答案:

答案 0 :(得分:2)

您可以使用greatest()

update tbl_test_timestamp set date_updated = greatest(t1, t2)

请注意,如果greatest()的任何自变量为null,则返回null。根据您的数据和用例,这可能会或可能不会令人担心。

答案 1 :(得分:1)

这将花费很长时间,但是您可以这样做:

update t
    set date_updated = greatest(t1, t2);

更新所有行可能需要很长时间。您可以考虑使用视图。