根据另一个字段的更新值更新字段

时间:2017-07-01 17:27:08

标签: mysql sql

我有以下查询(不言自明):

update t
    set scans = scans + 1, 
        is_active = if(count = scans, 0, is_active)
where id = 123

最后scans获得更新,实际上等于count,但is_active仍然保持1

我想每当scan = count时停用条目。

1 个答案:

答案 0 :(得分:1)

应该发生什么,according to the MySQL documentation

  

如果从表中访问要在表达式中更新的列,UPDATE将使用列的当前值。例如,以下语句将col1设置为比其当前值多一个:

     

UPDATE t1 SET col1 = col1 + 1;

     

以下语句中的第二个赋值将col2设置为当前(更新的)col1值,而不是原始col1值。结果是col1和col2具有相同的值。此行为与标准SQL不同。

     

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

     

单表UPDATE分配通常从左到右进行评估。对于多表更新,无法保证以任何特定顺序执行分配。