Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新前获取字段值_Mysql - Fatal编程技术网

Mysql 更新前获取字段值

Mysql 更新前获取字段值,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

是否有一种方法可以在更新查询本身之前获取值并更新查询

例如:

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'

只需重新排列这些集合

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