У меня есть таблица в SQL Server. Я хочу удалить из него первые 1000 строк. Однако я попробовал это, но вместо того, чтобы просто удалить первые 1000 строк, он удалил все строки в таблице.
Вот код:
delete from [mytab]
select top 1000
a1,a2,a3
from [mytab]
sql
sql-server
sql-delete
Эдгармце
источник
источник
delete from [mytab]
это одно утверждение, аselect top ...
другое.Ответы:
Код, который вы пробовали, на самом деле состоит из двух утверждений. А,
DELETE
за которым следуетSELECT
.Вы не определяете,
TOP
как приказано чем.Для определенных критериев упорядочения удаление из CTE или аналогичного табличного выражения является наиболее эффективным способом.
источник
DELETE TOP (1000) FROM table ORDER BY column
, прочтите следующее : «Строки, указанные в выражении TOP, используемом с INSERT, UPDATE, MERGE или DELETE, не расположены в каком-либо порядке».WITH
предупреждает жалобы от людей, которые этого не сделали.Может быть лучше для sql2005 + использовать:
Для Sql2000:
НО
Если вы хотите удалить определенное подмножество строк вместо произвольного подмножества, вы должны явно указать порядок подзапроса:
Спасибо tp @gbn за упоминание и требование более четкого и точного ответа.
источник
Как указано в приведенной ниже ссылке, вы можете удалить простым способом
http://technet.microsoft.com/en-us/library/ms175486(v=sql.105).aspx
источник
источник
источник
Это быстро. Попытайся:
Замените
YourTABLE
имя таблицыXX
числом, например 1000pk
- это имя поля первичного ключа вашей таблицы.источник