首页 > 解决方案 > SQLite - 删除包含字符串的行

问题描述

我使用这个SQLite库并想删除表中包含相同电子邮件地址的每一行。假设有 100 个用户注册了电子邮件:test@test.com,我想删除所有这些用户。根据文档,我们可以这样做:

let alice = users.filter(id == 1)
try db.run(alice.delete())
// DELETE FROM "users" WHERE ("id" = 1)

但是每个用户的 ID 是不同的。那么有没有可能做类似的事情:// DELETE FROM "users" WHERE ("email" = test@test.com).

表中的电子邮件列是一个字符串。像这样:let email = Expression<String>("email")

编辑:

我试过这个,但不知何故它删除了我所有的行,不仅仅是那些包含电子邮件地址的行:

let alice = users.select(self.email == emails[indexPath.row])
                let deleteUser = user.delete()
                do {
                    try self.database.run(deleteUser)
                } catch {
                    print(error)
                }

标签: swiftsqlite

解决方案


尝试这个:

let alice = users.filter([emails[indexPath.row]].contains(self.email))
                    let deleteUser = user.delete()
                    do {
                        try self.database.run(deleteUser)
                    } catch {
                        print(error)
                    }

推荐阅读