ORDER BY
и ROWS
Предложение ORDER BY
упорядочивает набор перед его удалением.Что может быть важно в некоторых случаях.
Предложение ROWS
позволяет ограничить количество удаляемых строк.Имеет смысл только в комбинации с предложением ORDER BY
, но допустимо и без него.
В качестве m и n могут выступать любые целочисленные выражения.
При одном аргументе m, удаляются первые m записей.Порядок записей без ORDER BY
не определён (случаен).
Замечания:
-
Если m больше общего числа записей в наборе, то весь набор удаляется;
-
Если m = 0, то удаление не происходит;
-
Если m < 0, то выдаётся сообщение об ошибке.
Если указаны аргументы m и n, удаление ограничено количеством записей от m до n, включительно.Нумерация записей начинается с 1.
Замечания по использованию двух аргументов:
-
Если m больше общего числа строк в наборе, ни одна строка не удаляется;
-
Если m > 0 и ⇐ числа строк в наборе, а n вне этих значений, то удаляются строки от m до конца набора;
-
Если m < 1 или n < 1, выдаётся сообщение об ошибке;
-
Если n = m – 1, ни одна запись не удаляется;
-
Если n < m – 1, выдаётся сообщение об ошибке.
ORDER BY
и ROWS
в операторе DELETE
Удаление самой старой покупки
DELETE FROM Purchases ORDER BY ByDate ROWS 1
Удаление заказов для 10 клиентов с самыми большими номерами
DELETE FROM Sales ORDER BY custno DESC ROWS 1 TO 10
Удаляет все записи из sales, поскольку не указано ROWS
DELETE FROM Sales ORDER BY custno DESC
Удаляет одну запись "с конца", т.е.от Z…
DELETE FROM popgroups ORDER BY name DESC ROWS 1
Удаляет пять самых старых групп
DELETE FROM popgroups ORDER BY formed ROWS 5
Сортировка (ORDER BY) не указана, поэтому будут удалены 8 обнаруженных записей, начиная с пятой.
DELETE FROM popgroups ROWS 5 TO 12