Удаление каждой n-й строки SQL - PullRequest
13 голосов
/ 18 августа 2010

Скажем, у меня есть таблица (id int, Name varchar) из 1000 строк.Теперь я хочу удалить каждую n-ую запись (каждую 2-ю, 3-ю или 5-ю).Какой самый эффективный способ сделать это?

1 Ответ

26 голосов
/ 18 августа 2010

для 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

При этом используется модуль, который возвращает остаток от деления. Если остаток равен нулю, то делимое значение кратно делителю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...