Как показать последние 10 данных, хранящихся в базе данных в табличном представлении? - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть база данных, в которой я храню адрес источника, адрес назначения и категорию. Теперь я хочу показать только последние 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 результатов в табличном представлении?

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Вы можете использовать следующий запрос, который будет получать только последние 10 записей.

const char *sql = "SELECT * FROM Places order by rowid desc limit 10";
0 голосов
/ 13 сентября 2011

Зависит от того, что значит «последний»?Если у вас есть столбец идентификатора автоинкремента, то вы, вероятно, имеете в виду «последний добавленный» или те, которые имеют самый большой идентификатор.В вашем случае, когда вы используете sqlite, вы можете использовать что-то вроде этого:

SELECT * FROM Places ORDER BY Id DESC LIMIT 10;

Где Id - это имя вашего столбца автоинкремента.Оператор выберет все записи из таблицы Places, затем упорядочит их по убыванию Id и будет использовать только первые 10 результатов.

В некоторых других базах данных вы также можете попробовать:

SELECT TOP 10 * FROM Places ORDER BY Id DESC;

Но обратите внимание , что не все системы баз данных поддерживают предложение TOP.

Надеюсь, это решит вашу проблему.

...