Sql delete from where: DELETE (Transact-SQL) — SQL Server

SQL Удалить записи в пределах определенного диапазона

спросил

Изменено 1 год, 3 месяца назад

Просмотрено 193к раз

Вероятно, это очень простой вопрос для человека с опытом, но я просто хотел узнать самый безопасный способ удалить пару сотен записей в таблице SQL, попадающих в определенный диапазон.

Например, мне нужно удалить строки с идентификатором от 79 до 296:

Меня беспокоит, что если я скажу удалить все с идентификатором (> 79 И < 296), то это может буквально стереть всю таблицу.

  • sql
  • sql-delete
  • записей

4

Если вы используете Sql Server

, удалите из таблицы, где идентификатор находится в диапазоне от 79 до 296.

Примечание: оператор между включительно, поэтому строки 79 и 296 также будут удалены

После Ваше редактирование: Вы теперь пояснили, что вы хотите:

ID (> 79 и <296)

SO. удалить из таблицы, где id > 79 и id < 296

8

Вы указали идентификатор условия (> 79 и < 296), тогда ответ:

 удалить из вкладки
где идентификатор > 79и идентификатор < 296
 

это то же самое, что:

 удалить из вкладки
где идентификатор между 80 и 295
 

, если id является целым числом.

Все отвеченные:

 удалить из вкладки
где идентификатор между 79 и 296
 

это то же самое, что:

 удалить из вкладки
где идентификатор => 79 и идентификатор <= 296
 

Обратите внимание на разницу.

2

 УДАЛИТЬ ИЗ имя_таблицы
ГДЕ ID МЕЖДУ 79 И 296;
 

0

вы также можете просто изменить свое удаление на select *

и проверить свой выбор

выбранные записи будут такими же, как и удаленные

вы также можете обернуть свое заявление в начало / откат, если вы не уверены - проверьте оператор, затем, если все хорошо, удалите откат

, например

SELECT * FROM table WHERE id BETWEEN 79 AND 296

покажет все записи, соответствующие тому, где если это те желания, которые вы «действительно» хотите удалить, используйте

УДАЛИТЬ ИЗ таблицы ГДЕ id МЕЖДУ 79 И 296

Вы также можете создать триггер /, который ловит удаления и помещает их в таблицу истории

, поэтому, если вы удалите что-то по ошибке, вы всегда можете вернуть это

(сохраняйте записи в таблице истории не старше

Если вы напишете это следующим образом на сервере SQL, тогда не будет опасности стирания таблицы базы данных, если только все значения в этой таблице не окажутся между этими значениями:

 УДАЛИТЬ ИЗ [dbo]. [TableName], ГДЕ [TableName].[IdField] МЕЖДУ 79 И 296
 

Меня беспокоит, если я скажу удалить все с идентификатором (> 79 И < 296) то он может буквально стереть всю таблицу...

Этого не произойдет, потому что у вас будет предложение where. Что происходит, так это то, что если у вас есть оператор типа delete * from Table1, где id находится между 70 и 1296 , первое, что сделает процессор запросов sql, это просканирует таблицу и найдет эти записи в этом диапазоне, а затем применит удалить.

Вы можете использовать этот способ, потому что идентификатор не может быть последовательным во всех случаях.

 ВЫБЕРИТЕ *
ОТ `ht_news`
ПРЕДЕЛ 0 , 30
 

Оператор SQL DELETE - Учебное пособие Республика

Рекламные объявления

В этом руководстве вы узнаете, как удалять записи из таблицы базы данных с помощью SQL.

Удаление данных из таблиц

Точно так же, как вы вставляете записи в таблицу с помощью оператора INSERT , вы также можете удалять записи из таблицы с помощью УДАЛИТЬ заявление.

Синтаксис

Оператор DELETE используется для удаления одной или нескольких строк из таблицы.

 УДАЛИТЬ ИЗ   имя_таблицы   ГДЕ   условие   ; 

Предупреждение: Предложение WHERE в операторе DELETE указывает, какую запись или записи следует удалить. Однако это необязательно, но если вы пропустите или забудете условие WHERE , все записи будут безвозвратно удалены из таблицы.

Давайте удалим некоторые записи из таблицы person , которую мы создали в главе создания таблицы.

Предположим, что наша таблица человек в настоящее время имеет следующие записи:

+----+------+--------------+---------- ---+
| идентификатор | имя | дата_рождения | телефон |
+----+------+--------------+---------- ---+
| 1 | Питер Уилсон | 15 июля 1990 г. | 0711-020361 |
| 2 | Кэрри Симпсон | 1995-05-01 | 0251-031259 |
| 3 | Виктория Эшворт | 1996-10-17 | 0695-346721 |
| 4 | Джордж Бейли | 1993-03-05 | 0897-034214 |
| 5 | Норман Бейтс | 1999-08-25 | 0522-556721 |
+----+------+--------------+---------- ---+
 

Удалить записи на основе условий

Следующий оператор удалит строки из таблицы лиц , где идентификатор больше 3.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *