Первый вопрос, который я хотел бы задать, быстрее сделать один запрос на удаление с несколькими предложениями, или быстрее выполнить один за другим? И второе, если так, то как сделать запрос на удаление с несколькими предложениями? Спасибо заранее!Как УДАЛИТЬ, используя несколько предложений WHERE [SQLITE]
ответ
Вы не можете иметь более одного WHERE
положение, но вы можете сделать условие более сложным.
Если таблица имеет FirstName
и LastName
, и вы хотите удалить John Doe
, Toby Steed
и Linda Powers
, а затем объединить AND
и OR
условия, как это:
DELETE FROM MyTable
WHERE (FirstName = 'John' AND LastName = 'Doe')
OR (FirstName = 'Toby' AND LastName = 'Steed')
OR (FirstName = 'Linda' AND LastName = 'Powers')
Теперь, если вы делаете это с Java, вы не должен (КОГДА-ЛИБО!) использовать конкатенацию строк для создания такого SQL-оператора. Используйте PreparedStatement
:
String sql = "DELETE FROM MyTable" +
" WHERE (FirstName = ? AND LastName = ?)" +
" OR (FirstName = ? AND LastName = ?)" +
" OR (FirstName = ? AND LastName = ?)";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, "John");
stmt.setString(2, "Doe");
stmt.setString(3, "Toby");
stmt.setString(4, "Steed");
stmt.setString(5, "Linda");
stmt.setString(6, "Powers");
stmt.executeUpdate();
}
Спасибо! И почему я не должен использовать конкатенацию строк для создания инструкции SQL? Как это очень плохо, если я так делаю? –
@ J.Arbet Поскольку значения (например, «Джон»), скорее всего, связаны с внешним ненадежным источником и могут быть вредоносными или просто содержать символы, вызывающие проблемы SQL, например. апостроф. Таким образом, если вы не избежите всех специальных символов, вы становитесь восприимчивыми к атакам [SQL Injection] (https://en.wikipedia.org/wiki/SQL_injection) (позволяя хакерам украсть и/или удалить ваши данные), или ваш SQL просто провалится, например для 'LastName = 'O'Malley''. Использование 'setString()' безопасно от этих проблем, а также позволяет базе данных лучше оптимизировать SQL. – Andreas
Попробуйте использовать это, может быть, это решение Вашего вопроса:
db.delete(TABLE,
KEY1 + "=? AND " + KEY2 + "=? AND " +
KEY3 + "=? AND " + KEY4 + "=?",
new String[] {param1, param2, param3, param4});
Если вы используете обычный выберите использование этого:
db.delete(TABLE,"Column1='value1' and column2 like 'value2'...", null);
Хорошо, но я использую классический способ, как «SELECT * FROM table_name» или «DELTE FROM table_name WHERE name = 'John' AND surname = 'Doe' ". Не могли бы вы рассказать мне, как сделать это прямо там, чтобы быть похожим на этот код? –
@ J.Arbet см. Обновленный ответ – Abdelhak
- 1. Несколько предложений WHERE MySQL
- 2. Как фильтровать результаты SQL, используя несколько предложений WHERE?
- 3. Несколько предложений WHERE с условием
- 4. Как PostgreSQL обрабатывает несколько предложений WHERE?
- 5. Удалить строку, используя where where
- 6. Несколько предложений where в одном запросе mysql
- 7. Поддержка MySQL Query -> Несколько предложений WHERE?
- 8. Несколько предложений .Where() на платформе Entity Queryable
- 9. Несколько предложений WHERE в SQL-запросе
- 10. Mysqli подготовленный оператор: несколько предложений WHERE и WHERE IN (Array)
- 11. Как иметь несколько предложений where в SQL-запросе
- 12. Объединение нескольких предложений WHERE
- 13. Извлеките несколько строк из sqlite, используя предложение where Android
- 14. Удалить строку MySQL, используя where where
- 15. Как добавить несколько предложений where на Eloquent ORM Laravel?
- 16. Как обрабатывать несколько предложений where в инструкции LINQ?
- 17. Как объединить несколько средних вычислений на основе множественных предложений WHERE?
- 18. SQLite несколько условий в WHERE LIKE
- 19. Сравнение производительности аналогичных предложений WHERE
- 20. несколько подобных предложений? SQL
- 21. Множество предложений where в YII2
- 22. Производительность: несколько условных предложений WHERE или динамический запрос?
- 23. Требуется несколько предложений where или лучший способ условного оператора
- 24. VBA Update MS Access Database - Несколько предложений WHERE
- 25. Несколько значений SUM с использованием предложений WHERE в Oracle
- 26. SQLite, передающий несколько параметров в WHERE
- 27. Eclipse SQLite несколько запросов с предложением Where
- 28. Создание динамических предложений where в mysql
- 29. Как удалить несколько таблиц одновременно Sqlite + Ionic2
- 30. Удалить несколько записей, используя флажки
Вы имеете в виду что-то вроде 'Удалить из СТУДЕНТОВ Где student_id = 1 И Student_Name LIKE '% An%' '? – user2004685
@ user2004685 он, вероятно, означает «OR», а не «AND», так как он предлагает альтернативу для выполнения нескольких запросов. – Aaron
Да, я хотел бы удалить несколько строк сразу, как WHERE name = John surname = Doe, а также WHERE name = Dog surname = Barf Что-то вроде этого –