It should keep each iteration. But it is not recommended as it can cause the workflow to get bogged down.
The use case is pretty strange. If you just got an update why would it be held for another 2 hours?
I would break out what you have into two different workflows.
One to run the query every 30 min, then output query result into a list.
Then in the second workflow read that list on a 2 hour cadence.