在WCDB中,可以使用以下方式将原始SQL语句转换为WCDB语法:

let query = """
    SELECT chathistory_fts.cid, chatsession.avatar, chatsession.nick,
    COUNT(1) as count, MAX(chathistory_fts.updated_at) as updated_at
    FROM chatsession
    JOIN chathistory_fts ON chatsession.rowid = chathistory_fts.cid
    WHERE chathistory_fts MATCH :query
    GROUP BY chathistory_fts.cid, chatsession.avatar, chatsession.nick
    ORDER BY updated_at DESC
    LIMIT :limit OFFSET :offset
    """

let statement = WCDBSwift.StatementSelect().select(
    WCDBSwift.Column("chathistory_fts.cid"),
    WCDBSwift.Column("chatsession.avatar"),
    WCDBSwift.Column("chatsession.nick"),
    WCDBSwift.Function.count.as("count"),
    WCDBSwift.Function.max.as("updated_at")
).from(
    WCDBSwift.TableNamed("chatsession")
).join(
    WCDBSwift.TableNamed("chathistory_fts"),
    on: WCDBSwift.Expression
        .join(
            WCDBSwift.Column("chatsession.rowid"),
            with: WCDBSwift.Column("chathistory_fts.cid")
        )
).where(
    WCDBSwift.Expression
        .match(
            WCDBSwift.Column("chathistory_fts"),
            query
        )
).groupBy(
    WCDBSwift.Column("chathistory_fts.cid"),
    WCDBSwift.Column("chatsession.avatar"),
    WCDBSwift.Column("chatsession.nick")
).orderBy(
    WCDBSwift.Column("updated_at"),
    by: .descending
).limit(
    Int32(limit),
    offset: Int32(offset)
)

// 执行查询语句
let result: WCDBSwift.StatementResult = try database.prepare(statement)

请注意,上述代码假设你已经创建了一个名为database的WCDB数据库实例,并且你已经在项目中导入了WCDBSwift库

微信数据库框架WCDB 2025 版本swift多表查询的sql原语句如何转换成WCDB语法select chathistory_ftscid chatsessionavatar chatsessionnick count1 as count maxchathistory_ftsupdated_at as updated_at from chatsession jo

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

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