我有一个像这样的表:
id | NODE_ID | last_updated
1 | 4 | 11-29-2010 ...
其中,last_updated 列设置为使用“更新时 CURRENT_TIMESTAMP”对行进行任何更改后更新
我需要更新 NODE_ID 为 4 到 5 的所有记录,但我想保持时间戳不变。
我正在考虑进行更新并引用查询中当前选定的行来手动设置时间戳...令人困惑...就像这样
更新作业集 NODE_ID=4,last_updated = this.last_updated,其中 NODE_ID = 5;
我可以用什么来替换查询中的“this”?如果我不能,那么做这种事情的最佳方法是什么?
~肖恩
PS。 mysql Ver 14.12 Distrib 5.0.86,适用于使用 readline 5.1 的 redhat-linux-gnu (i686)最佳答案
这应该可以做到:
update jobs set NODE_ID=4, last_updated = last_updated where NODE_ID = 5;
ETA:最初我认为这行不通,因为我认为 on update
约束将在您设置值后执行,删除您的“更改”(或缺少“更改”)。但是this让我相信事实并非如此。
关于mysql - SQL 在查询中引用当前记录 ("this"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219294/