Ossia?

Quello che ti ho consigliato, non impatta sul DB, altrimenti dovresti mettere un flag sulla tabella che tiene conto del record estratto per poi risettarlo quando hai finito, sarebbe molto brutta come cosa.

Non è difficile quello che ti ho detto.

Fai la query
Cicli sul risultato della query riempiendo l'array impostando il flag a N
Crei un ciclo che estrae i dati dall'array solo se esistono righe con flag a N

Good job!