Мне нужно удалить определенный диапазон строк из таблицы в базе данных sybase.Удаление определенного диапазона строк из таблицы в базе данных sybase
Например, у меня есть 10 строк. но я хочу удалить 5-7 строк из моей таблицы. как мы можем удалить.
Мне нужно удалить определенный диапазон строк из таблицы в базе данных sybase.Удаление определенного диапазона строк из таблицы в базе данных sybase
Например, у меня есть 10 строк. но я хочу удалить 5-7 строк из моей таблицы. как мы можем удалить.
DELETE FROM someTable
WHERE myPrimaryKey in (5, 6, 7)
Другими словами: Вы не можете просто сообщить СУБД удалить «пятую запись» из таблицы. Вам нужно будет построить предложение where
, которое точно соответствует тем строкам, которые вы хотите удалить.
Когда вы думаете об этом, это имеет смысл, поскольку СУБД не гарантирует никакого внутреннего порядка записей в таблице, то есть не имеет внутренней концепции того, что представляет собой n-я запись.
По умолчанию таблица не имеет заданного порядка, поэтому вам необходимо определить порядок удаления 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