在 Swift GRDB 中,你可以使用 filterdelete 方法来删除所有 cid 相同的数据。下面是一个示例代码:

import GRDB

// 创建数据库连接
let dbQueue = try DatabaseQueue(path: "path_to_database")

// 定义数据模型结构
struct MyTable: TableRecord {
    static let tableName = "myTable"
    
    var cid: Int
    var col1: String
    var col2: Int
}

// 删除所有cid相同的数据
try dbQueue.write { db in
    try db.inTransaction { 
        let cids = try MyTable
            .select(Column("cid"))
            .distinct()
            .fetchAll(db)
        
        for cid in cids {
            try MyTable
                .filter(Column("cid") == cid.cid)
                .deleteAll(db)
        }
        
        return .commit
    }
}

在上面的代码中,我们首先创建了一个数据库连接 dbQueue,然后定义了一个名为 MyTable 的数据模型结构,该结构对应了数据库中的表格。接下来,在 dbQueue.write 代码块中,我们使用 inTransaction 方法来开启一个事务,以确保数据的一致性。

在事务中,我们首先查询出所有不重复的 cid 值,并使用 fetchAll 方法将其存储在 cids 数组中。然后,我们遍历 cids 数组,使用 filter 方法过滤出所有 cid 等于当前遍历的 cid 的数据,并使用 deleteAll 方法将其删除。

最后,我们使用 .commit 来提交事务,以确保删除操作生效。

请注意,上述代码中的表名、列名和数据模型结构都需要根据你的实际数据库结构进行修改。

Swift GRDB 4.14.0: 删除所有相同 cid 的数据 - 示例代码

原文地址: https://www.cveoy.top/t/topic/pnvo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录