O Mysql tem uma função muito útil LAST_INSERT_ID
. Se chamado sem um parâmetro, ele retorna o último id inserido como todos nós o conhecemos. Mas se você atribuir a ele um parâmetro, ele define o último id inserido da conexão. Dessa forma, você pode armazenar facilmente o resultado de um cálculo em uma célula e buscá-lo em uma consulta .
Exemplo usando ruby + mysql2:
# table looks like this:
# +----+--------+
# | id + value +
# +----+--------+
# | 1 | 1 |
# | 2 | 2 |
# +----+--------+
# client is a Mysql2::Client
client.query('UPDATE `table` SET
`value` = LAST_INSERT_ID(`value`*3)
WHERE `id` = 1;')
client.last_id # == 3
# the table now looks like this:
# +----+--------+
# | id + value +
# +----+--------+
# | 1 | 3 |
# | 2 | 2 |
# +----+--------+
Agradável!