Задать вопрос
@uroot

Как удалить записи с базы используя limit?

У меня есть таблица:
Таблица
CREATE TABLE public.order_clients (
  order_id int8 NOT NULL,
  client_id int8 NOT NULL,
  linked_at timestamptz DEFAULT now() NOT NULL,
);


В таблице есть дубликаты, и я хочу удалить все не уникальные строки (связка order_id и client_id должна быть уникальной).
Но проблема в том, что я не знаю, как удалить только первые 1000 строк. Таблица огромная, и я должен удалять по 1000 строк за раз. Записи буду удалять скриптом на Node.JS.

Мой старый запрос:
delete from order_clients
where (client_id, order_id, linked_at) not in (
  select client_id, order_id, max(linked_at) as max_linked_at
  from order_clients
  group by client_id, order_id
)


66339ca44d957543210848.png
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
PostgreSQL?
DELETE FROM order_clients
  WHERE ctid IN (
    SELECT DISTINCT o.ctid 
      FROM order_clients AS o
      JOIN order_clients AS t
        ON t.client_id = o.client_id AND t.order_id = o.order_id
          AND t.linked_at < o.linked_at
      LIMIT 1000
  );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы