我有数据库,我在其中存储源地址,目的地地址和类别。现在我想在表视图中仅显示存储在该数据库中的最后10个数据。我正在使用此代码检索数据表单数据库...
-(void) openDB {
listOfStudents = [[NSMutableArray alloc] init];
if(sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK) {
const char *sql = "select * from Places";
sqlite3_stmt *stmt;
int rtnVal = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if( rtnVal == SQLITE_OK) {
while (sqlite3_step(stmt) == SQLITE_ROW) {
Places_data *pd_object = [[[Places_data alloc] init] autorelease];
pd_object.place_id = sqlite3_column_int(stmt, 0);
pd_object.start_add = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 1)];
pd_object.end_add = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 2)];
pd_object.strcategroy = [NSString stringWithUTF8String:(char *) sqlite3_column_text(stmt, 3)];
[self.listOfStudents addObject:pd_object];
}
}
sqlite3_finalize(stmt);
}
sqlite3_close(db);
}
现在我在上面的代码中做了哪些更改,表明它只在表格视图中显示最后10个结果?
答案 0 :(得分:1)
您可以使用以下查询,该查询仅提取最后10条记录。
const char *sql = "SELECT * FROM Places order by rowid desc limit 10";
答案 1 :(得分:0)
这取决于“最后”是什么意思?如果您有任何autoincrement id colunm,那么您可能意味着“最后插入”或具有最大id的那些。在您使用sqlite的情况下,您可以使用以下内容:
SELECT * FROM Places ORDER BY Id DESC LIMIT 10;
其中Id
是您的自动增量列名称。该语句将从表Places
中选择所有条目,然后按Id
降序排序,并仅使用前10个结果。
在其他一些数据库中,您也可以尝试:
SELECT TOP 10 * FROM Places ORDER BY Id DESC;
但注意并非所有数据库系统都支持TOP子句。
希望它能解决你的问题。