微信数据库框架WCDB 2025 版本swift多表查询的sql原语句如何转换成WCDB语法select chathistory_ftscid chatsessionavatar chatsessionnick count1 as count maxchathistory_ftsupdated_at as updated_at from chatsession jo
在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库
原文地址: https://www.cveoy.top/t/topic/iF8Z 著作权归作者所有。请勿转载和采集!