Скажем, у меня есть таблица (id int, Name varchar) из 1000 строк. Теперь я хочу удалить каждую n-ю запись (каждые 2, 3 или 5). Каков наиболее эффективный способ сделать это?
Удаление каждой n-й строки SQL
Ответ 1
Для SQL Server 2005 +
Каждая вторая строка
WITH example AS (
SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.id) AS rank
FROM TABLE t)
DELETE example
WHERE rank%2 = 0
Для каждой третьей строки измените предложение WHERE на:
WHERE rank%3 = 0
Anf для каждой пятой строки:
WHERE rank%5 = 0
Это использует модуль, который возвращает остаток от деления. Если остаток равен нулю, деление делится на делитель.