Ответ 1
если вы используете Sql Server
delete from Table where id between 79 and 296
После вашего редактирования: теперь вы уточнили, что хотите:
ID (>79 AND < 296)
Поэтому используйте это:
delete from Table where id > 79 and id < 296
Это, наверное, очень простой вопрос для кого-то, у кого есть опыт, но я просто хотел узнать, как безопасный способ удалить несколько сотен записей в таблице SQL, которые попадают между определенным диапазоном.
Например, мне нужно удалить строки с идентификатором между 79 и 296:
Мое беспокойство заключается в том, что я могу удалить все с идентификатором ( > 79 И < 296), после чего он может буквально стереть всю таблицу.
если вы используете Sql Server
delete from Table where id between 79 and 296
После вашего редактирования: теперь вы уточнили, что хотите:
ID (>79 AND < 296)
Поэтому используйте это:
delete from Table where id > 79 and id < 296
Вы дали идентификатор состояния ( > 79 и < 296), тогда ответ будет следующим:
delete from tab
where id > 79 and id < 296
это то же самое, что:
delete from tab
where id between 80 and 295
если id
- целое число.
Все ответили:
delete from tab
where id between 79 and 296
это то же самое, что:
delete from tab
where id => 79 and id <= 296
Обратите внимание на разницу.
DELETE FROM table
WHERE id BETWEEN 79 AND 296
Если вы напишете это как на SQL-сервере, тогда не будет никакой опасности вытереть таблицу базы данных, если все значения в этой таблице фактически не будут находиться между этими значениями:
DELETE FROM [dbo].[TableName] WHERE [TableName].[IdField] BETWEEN 79 AND 296
Мое беспокойство заключается в том, что я говорю delete evertything с идентификатором ( > 79 AND < 296) то он может буквально стереть всю таблицу...
Это не произойдет, потому что у вас будет предложение where. Случается, что если у вас есть выражение типа delete * from Table1 where id between 70 and 1296
, первое, что сделает процессор запросов sql, - это сканировать таблицу и искать эти записи в этом диапазоне, а затем применить удаление.
вы также можете просто изменить свое удаление на select *
и проверьте свой выбор
выбранные записи будут такими же, как те, которые были удалены
вы также можете обернуть свой оператор в начале/откате, если вы не уверены - проверьте утверждение, если все хорошо удалите откат
например
SELECT * FROM table ГДЕ ИД МЕЖДУ 79 И 296
отобразит все записи, соответствующие если это то, что вы действительно хотите удалить, используйте
УДАЛИТЬ ИЗ таблицы ГДЕ ИД МЕЖДУ 79 И 296
Вы также можете создать триггер/который ловит удаляет и помещает их в таблицу истории
поэтому, если вы удаляете что-то по ошибке, вы всегда можете вернуть его
(сохраняйте записи в таблице истории не старше 6 месяцев или, как ни странно, в бизнес-правилах)
Вы можете использовать этот способ, потому что идентификатор не может быть последовательным во всех случаях.
SELECT *
FROM `ht_news`
LIMIT 0 , 30