my $sql = sprintf "UPDATE table SET id = %d - id WHERE id IN ( %d, %d )", ($val1+$val2), $val1, $val2; mysql> select * from test; +------+------+ | id | num | +------+------+ | 1 | 100 | | 2 | 200 | +------+------+ 2 rows in set (0.00 sec) mysql> UPDATE test SET id = 3 - id WHERE id IN (1,2); Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from test; +------+------+ | id | num | +------+------+ | 2 | 100 | | 1 | 200 | +------+------+ 2 rows in set (0.00 sec) mysql>