1

我使用 FMDB 作为 sqlite 包装器,这很容易上手。当我尝试加入两个(实际上是一个)表时遇到了问题。

为了区分连接的两个表的列,我必须使用select a.a as 'a.a', b.a as 'b.a' from the_table as a join the_table as b on.... 然后我可以使用[rs stringForColumn:@"a.a"][rs stringForColumn:@"b.a"]访问它们(其中 rs 属于 FMResultSet 类)。但我有大约 15 列,所以 sql 字符串看起来很长。我想知道是否有更简单的方法可以做到这一点?

使用select * from the_table as a join the_table as b...,我可以分别访问 a 和 b 的内容吗?可能是这样的[rs resultSetForRenamedTable:@"a"]

4

2 回答 2

1

嗯,FMDB 只是 SQLite 之上的一个包装器,

我想如果您在这种特殊情况下使用* , SQLite 会引发错误。类似于:SQL 错误:不明确的列名:a

于 2011-03-04T16:19:22.593 回答
0

使用 ATTACH DATABASE 查询https://www.sqlite.org/lang_attach.html

例如:

db = [FMDatabase databaseWithPath:mCoreDatabase]; 
[db open]; 
NSString *attachSQL = [NSString stringWithFormat: @"ATTACH DATABASE '%@' AS db2", yourDB2Path]; 
[db executeUpdate:attachSQL]; 
于 2014-03-01T19:11:32.363 回答