This is a bit better I think: WITH cte AS ( SELECT DATE('now', 'localtime') AS now , IFNULL(MAX(lastUsedIdx), 0) + 1 AS idx FROM selectRandom WHERE lastUsed == now ) UPDATE selectRandom SET lastUsed = (SELECT now FROM cte) , lastUsedIdx = (SELECT idx FROM cte) WHERE description = :teaToBrew