2014-01-09 4 views

ответ

0
DELETE FROM someTable 
WHERE myPrimaryKey in (5, 6, 7) 

Другими словами: Вы не можете просто сообщить СУБД удалить «пятую запись» из таблицы. Вам нужно будет построить предложение where, которое точно соответствует тем строкам, которые вы хотите удалить.

Когда вы думаете об этом, это имеет смысл, поскольку СУБД не гарантирует никакого внутреннего порядка записей в таблице, то есть не имеет внутренней концепции того, что представляет собой n-я запись.

0

По умолчанию таблица не имеет заданного порядка, поэтому вам необходимо определить порядок удаления 5-7 строк. Вы можете попытаться использовать ROW_NUMBER(), чтобы определить порядок в таблице для подсчета строк. Например, если у вас есть первичный ключ ID вы можете заказать по этой колонке:

WITH T1 AS 
(
SELECT T.*, 
     ROW_NUMBER() OVER (ORDER BY ID) as RowNum 
     FROM T 
) 

DELETE FROM T1 WHERE RowNum between 5 and 7 

SQLFiddle demo

Смежные вопросы