伙计,我下面是示例表结构,
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百万条记录中运行此查询。
答案 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);
更新所有行可能需要很长时间。您可以考虑使用视图。