mysql - SQL 在查询中引用当前记录 ("this")

标签 mysql

我有一个像这样的表:

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/

相关文章:

mysql - 从一个表中查询与另一个表中的值匹配的数据

php - 通过 PHP 与 cPanel 交互

php - 将动态生成的 php 变量传递给 jquery 函数

mysql - 两个表mysql更新语句超时-我做错了什么?

mysql - 插入之前检查数据是否存在并返回 true/false?

mysql - COUNT 正在计算 LEFT JOIN 上不存在的内容。为什么?

mysql - 在 SQL 中插入新列

mysql - WordPress 数据库密码 : how to obtain dynamically instead of hardcoding in wp-config. php

php - 无法使用 URL 中的新值更新 MYSQL 数据库(使用 GET)

mysql performance <, > for varchar vs integer