Удалить диапазон строк с помощью generate_series ()? - PullRequest
0 голосов
/ 03 августа 2020

Чтобы обновить каждую строку в таблице, я использую этот запрос (и он работает):

введите описание изображения здесь

Интересно, могу ли я использовать аналогичное обозначение для DELETE?

Что-то вроде:

DELETE from test2
from generate_series(1, 1000) as idx
WHERE id = idx;

Не будет работать как второй FROM конечно недействительно. Есть идеи, как это исправить?

Что лучше всего подходит для такого рода операций?

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Используйте USING:

DELETE from test2 
       using generate_series(1, 1000) idx
       WHERE id = idx
1 голос
/ 04 августа 2020

Что лучше всего подходит для такого рода операций?

Вы можете использовать generate_series(), как демонстрирует Гордон. Это может иметь смысл даже для нецелочисленных типов или с приращением <> 1. Однако для простых случаев простой запрос лучше:

DELETE FROM test2 
WHERE  id BETWEEN 1 AND 1000;
...