Удаление каждой n-й строки SQL

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

13
задан OMG Ponies 24 October 2010 в 19:42
поделиться

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

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

26
ответ дан 1 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

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