Поделиться через


Ограничение удаляемых строк с помощью предложения TOP

Изменения: 5 декабря 2005 г.

Число строк, удаляемых инструкцией DELETE, можно ограничивать с помощью предложения TOP. Если с инструкцией DELETE применяется предложение TOP (n), то операция удаления производится над n случайно выбранных строк.

Например, следующая инструкция удаляет 20 случайных строк из таблицы PurchaseOrderDetail, имеющих дату ранее 1 июля 2002 г.:

USE AdventureWorks;
GO
DELETE TOP (20) 
FROM Purchasing.PurchaseOrderDetail
WHERE DueDate < '20020701';
GO

Если необходимо с помощью предложения TOP удалять строки в значимом хронологическом порядке, то вместе с ним в инструкции вложенного запроса выборки следует использовать ORDER BY. Следующий запрос удаляет из таблицы PurchaseOrderDetail 10 строк, имеющих самую раннюю дату. Чтобы гарантировать удаление только 10 строк, столбец, указанный в инструкции подзапроса выборки (PurchaseOrderID) должен являться первичным ключом таблицы. Использование неключевого столбца в инструкции подзапроса выборки может привести к удалению более чем 10 строк, если указанный столбец содержит повторяющиеся значения.

USE AdventureWorks;
GO
DELETE FROM Purchasing.PurchaseOrderDetail
WHERE PurchaseOrderDetailID IN
   (SELECT TOP 10 PurchaseOrderDetailID 
    FROM Purchasing.PurchaseOrderDetail 
    ORDER BY DueDate ASC);
GO

См. также

Основные понятия

Удаление строк с помощью инструкции DELETE
Удаление всех строк с помощью инструкции TRUNCATE TABLE
Удаление строк в результирующих наборах
Ограничение результирующих наборов с помощью предложений TOP и PERCENT

Другие ресурсы

TOP (Transact-SQL)
DELETE (Transact-SQL)
Удаление данных в таблице

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Новое содержимое:
  • Добавлены сведения о необходимости указания первичного ключа при использовании инструкции подзапроса выборки с предложением ORDER BY.