Как удалить несколько строк из таблицы?
Всем привет!
В таблице есть несколько столбцов, один из них с датой вида: 2020-09-27T17:00:00.000Z.
Требуется удалить несколько строк со старыми данными за предыдущие дни. Делаю запрос вида:
delete = DayData.query.filter(DayData.date.between('2020-09-27T16:00:00.000Z', '2020-09-28T11:00:00.000Z')) db.session.delete(delete) db.session.commit()
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'flask_sqlalchemy.BaseQuery' is not mapped
При этом, если вместо .filter() использовать .first(), то корректно удаляет у таблицы первую строку.
Помогите, пожалуйста
- Вопрос задан более трёх лет назад
- 1048 просмотров
Удаление нескольких строк в таблице одним запросом. MYSQL
Мне нужно, что бы записи удалялись по выбору с чекбокса, смог реализировать только одиночное удаление, но вот реализировать удаление сразу нескольких не удается.
22 ноя 2014 в 14:27
Покажите как реализовано одиночное удаление и объясните чем вам не понятен совет @Etki
22 ноя 2014 в 17:46
Если передаешь id отмеченной записи, то можно так DELETE FROM table_name WHERE id IN (id1, id2, . id_N)
22 ноя 2014 в 19:57
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Объясняю как гуглить: множественный чекбокс, прием данных post запросом с этого чекбокса, составление запроса как указал batazor
Отслеживать
ответ дан 22 ноя 2014 в 20:11
1,259 2 2 золотых знака 17 17 серебряных знаков 35 35 бронзовых знаков
Спасибо, уже сам решил проблему. Спасибо большое batazor.
22 ноя 2014 в 20:15
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как удалить несколько строк в sql
1. Перетащите действие Удалить строки из списка в соединителе Соединитель SQL на канву, наведите указатель на это действие и щелкните значок или дважды щелкните действие. Откроется окно «Удалить строки».
2. При необходимости измените поле Метка . По умолчанию наименование метки совпадает с наименованием действия.
3. Дополнительные сведения о добавлении типа соединителя SQL см. в разделе Поддерживаемые типы соединителей SQL .
Если тип соединителя был добавлен ранее, выберите подходящий Тип соединителя и в поле Наименование соединителя выберите соединитель.
4. Щелкните Тестировать , чтобы проверить соединитель.
5. Щелкните Сопоставить соединитель , чтобы выполнить действие с помощью соединителя, отличного от используемого для заполнения полей ввода. В поле Соединитель времени выполнения укажите действительное наименование соединителя SQL. Дополнительные сведения о команде Сопоставить соединитель см. в разделе Использование сопоставления соединителя .
Как удалить несколько строк в sql
Оператор DELETE удаляет из таблицы table_name строки, удовлетворяющие заданным в where_definition условиям, и возвращает число удаленных записей.
Если оператор DELETE запускается без определения WHERE , то удаляются все строки. При работе в режиме AUTOCOMMIT это будет аналогично использованию оператора TRUNCATE . See section 6.4.7 Синтаксис оператора TRUNCATE . В MySQL 3.23 оператор DELETE без определения WHERE возвратит ноль как число удаленных записей.
Если действительно необходимо знать число удаленных записей при удалении всех строк, и если допустимы потери в скорости, то можно использовать команду DELETE в следующей форме:
mysql> DELETE FROM table_name WHERE 1>0;
Следует учитывать, что эта форма работает намного медленнее, чем DELETE FROM table_name без выражения WHERE , поскольку строки удаляются поочередно по одной.
Если указано ключевое слово LOW_PRIORITY , выполнение данной команды DELETE будет задержано до тех пор, пока другие клиенты не завершат чтение этой таблицы.
Если задан параметр QUICK , то обработчик таблицы при выполнении удаления не будет объединять индексы — в некоторых случаях это может ускорить данную операцию.
В таблицах MyISAM удаленные записи сохраняются в связанном списке, а последующие операции INSERT повторно используют места, где располагались удаленные записи. Чтобы возвратить неиспользуемое пространство и уменьшить размер файлов, можно применить команду OPTIMIZE TABLE или утилиту myisamchk для реорганизации таблиц. Команда OPTIMIZE TABLE проще, но утилита myisamchk работает быстрее. See section 4.5.1 Синтаксис команды OPTIMIZE TABLE . See section 4.4.6.10 Оптимизация таблиц.
Первый из числа приведенных в начале данного раздела многотабличный формат команды DELETE поддерживается, начиная с MySQL 4.0.0. Второй многотабличный формат поддерживается, начиная с MySQL 4.0.2.
Идея заключается в том, что удаляются только совпадающие строки из таблиц, перечисленных перед выражениями FROM или USING . Это позволяет удалять единовременно строки из нескольких таблиц, а также использовать для поиска дополнительные таблицы.
Символы .* после имен таблиц требуются только для совместимости с Access:
DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
В предыдущем случае просто удалены совпадающие строки из таблиц t1 и t2 .
Выражение ORDER BY и использование нескольких таблиц в команде DELETE поддерживается в MySQL 4.0.
Если применяется выражение ORDER BY , то строки будут удалены в указанном порядке. В действительности это выражение полезно только в сочетании с LIMIT . Например:
DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp LIMIT 1
Данный оператор удалит самую старую запись (по timestamp ), в которой строка соответствует указанной в выражении WHERE .
Специфическая для MySQL опция LIMIT для команды DELETE указывает серверу максимальное количество строк, которые следует удалить до возврата управления клиенту. Эта опция может использоваться для гарантии того, что данная команда DELETE не потребует слишком много времени для выполнения. Можно просто повторять команду DELETE до тех пор, пока количество удаленных строк меньше, чем величина LIMIT .
