Как перебрать таблицу в базе данных?

Имею базу данных mysql, и таблицу с большим количеством записей. Решил перебирать частями. Написал такой код:

async* _getEntities() {
    let offset = 0, total;
    const limit = 100;

    do {
        const result = //Запрос к базе данных. Limit и offset тоже тут указаны.

        //Рассчитываем смещение.
        offset = result.offset + limit;
        total = result.total;

        yield result.data;

    } while (offset < total);
}

И контроллер для этого такой:

async controller() {
   for await (const item of this._getEntities()) {
      if (тут условие) {
        //Запрос в базу данных, на удаление элемента. ТУТ И ЕСТЬ ПРОБЛЕМА.
      }
   }
}

Суть проблемы: если я удалю элемент, количество всех записей ("total") изменится, a смещение (offset) это не учитывает, что приведет к пропускам.

Как корректно перебрать? Все, что пришло в голову - собрать массив с id и потом удалять.


Ответы (1 шт):

Автор решения: nörbörnën
while (1) {
  ...
  if (!result.rows || result.rows.length < limit) {
    break;
  }
}

Но, вообще, нет смысла городить эту городушку так как в есть команда DELETE FROM TABLENAME WHERE ...YOUR_CONDITIONS...;

→ Ссылка