mysql - 更新前获取字段值

标签 mysql

有没有办法在更新查询本身中获取之前的值并更新查询?

例如:

UPDATE t SET field1 = 'new', field2 = IF (field2 = field1, 'new', field2))

在“field2 = field1”中,我想检查字段的先前值。 Mysql 的工作方式是更新 field1,然后与新值进行比较,因此比较始终是“IF (field2 = 'new', ...”

所以我想要类似的东西

UPDATE t SET field1 = 'new', field2 = IF (field2 = PREVIOUS_VALUE(field1), 'new', field2))

更新:

有时在更复杂的例子中交换可能不起作用,当我想要这样的时候:

UPDATE t SET field1 = IF (field1 = PREVIOUS_VALUE(field2), 'new', field1)), field2 = IF (field2 = PREVIOUS_VALUE(field1), 'new', field2))

最佳答案

只需重新排列这些集合即可。

UPDATE t
SET 
field2 = IF (field2 = field1, 'new', field2),
field1 = 'new';

演示:http://sqlfiddle.com/#!2/bb265/1

关于mysql - 更新前获取字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804302/

相关文章:

mysql - SQL-显示 null、0 和非当前值

mysql - 内连接中表的 SQL 锁定

mysql - 按列绑定(bind)两个SQL查询的结果

php - 基于多个字段创建序列的正确方法

php - 使用 Laravel 从数据库加载数据

php - PDO 不适用于端口

mysql - 表 '/tmp/#sql_1_0.MAI' 是只读的

MySQL 使用 IN 优化查询

php - 从其 ID 返回数据库列的值

java - jsp中自动轮询数据库