2010-08-05 11 views
10

pregunta QUICKY en SQLite3 (puede ser también SQLite general)SQLite3 (o SQL general) recuperar enésima fila del resultado de una consulta

¿Cómo se puede recuperar la fila enésima de un resultado de la consulta?

row_id (o cualquiera que sea el índice) no funcionará en mi caso, dado que las tablas contienen una columna con un número. En función de algunos datos, la consulta necesita los datos sin clasificar u ordenados por criterios asc/desc.

Pero es posible que deba recuperar rápidamente, por ejemplo, filas 2 & 5 de los resultados.

Así que, aparte de implementar un sqlite3_step() == SQLITE_ROW con un contador en este momento, no tengo idea de cómo proceder con esto.

Y esta solución no me gusta demasiado debido a problemas de rendimiento. así que si alguien puede dejar caer una pista que sería muy apreciada.

Saludos David

+0

multiple: http://stackoverflow.com/questions/3492703/sql-how-to-select-1st-3rd-11th-and-nth-row-from-atabletable –

Respuesta

19

añadir LIMIT 1 y OFFSET <n> a la consulta
ejemplo SELECT * FROM users LIMIT 1 OFFSET 5132;

+0

suena genial, pero yo no saber si esto funciona en sqlite3, lo probará difícil –

+1

debería funcionar en sqlite3 – wlk

+1

funciona muy bien en sqlite3 Wotjek, ¡GRACIAS! –

0

El enfoque general es que, si desea que sólo la fila n de m filas, utilice una condición apropiada where sólo obtenga esa fila.

Si necesita llegar a una fila y no puede porque ningún criterio where lo puede llevar hasta allí, su base de datos tiene un problema serio de diseño. Falla el first normal form, que establece que "No hay ordenamiento de arriba a abajo para las filas".

+0

pero no tendré un criterio para DONDE? row_id's no funcionará aquí –

+1

Entonces, ¿cómo sabes que necesitas la enésima fila, y no las otras? – MPelletier

Cuestiones relacionadas