sqlite - 如何使用多个 WHERE 子句进行 DELETE [SQLITE]

标签 sqlite

我想问的第一个问题是,使用多个where子句进行一个删除查询更快,还是一个一个执行更快?
其次,如果是这样,那么如何使用多个 where 子句进行删除查询?
提前致谢!

最佳答案

您不能拥有多个 WHERE子句,但您可以使条件更复杂。

如果您的表有 FirstNameLastName ,并且您要删除 John Doe , Toby Steed , 和 Linda Powers ,然后合并 ANDOR像这样的条件:

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();
}

关于sqlite - 如何使用多个 WHERE 子句进行 DELETE [SQLITE],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047866/

相关文章:

ruby-on-rails - 我的 Rails 控制台不断崩溃

.net - SQLite 等效于 ISNULL()、NVL()、IFNULL() 或 COALESCE()

java - Android 应用程序强制关闭设备

python - 带有python : where is data stored before commit?的sqlite3

c# - SQLite 和 EF6 的愚蠢行为

android - 从 Android SQLite 游标中删除行

android - 尝试将项目放入微调器时出错-Android

sql - 为什么我的 sqlite sql 没有返回结果?

python - 从 sqlite 表中提取项目以在 Python 中使用时遇到问题

java - Android SQLite : How to ensure consistency in batch upload and delete upon success if no unique key is given?