2012-05-08 9 views
15

Estoy tratando de consultar una base de datos sql lite con solo un desplazamiento y sin límite.SqlLite con omisión (compensación) solamente (sin límite)

SELECT [Id], [Name], [IntValue], [IntNulableValue] FROM [Product] OFFSET 10 

Puedo hacer una consulta de desplazamiento cuando tengo un límite (LIMIT 10 OFFSET 10).

Aquí está el error que sql lite me está dando.

SQLite error near "10": syntax error 

¿Alguna idea? ¡Gracias por adelantado!

Respuesta

33

Simplemente configure LIMIT en -1.

Por ejemplo:

SELECT * FROM table LIMIT -1 OFFSET 10 
+0

Sería grandioso si Mysql implementara la misma idea – elipoultorak

+0

Supongo que -1 es la más vista que 2^64-1, y más corta, pero en términos de limpieza general, ambos son números mágicos. La solución limpia sería separar el límite y la compensación dado que sirven casos de uso separados. ¡El chocolate y la leche van muy bien juntos, pero a veces quiero uno sin el otro! – aaaaaa

7

En el SQL tal como lo entiende la página SQLite, notará que OFFSET no se entiende sin LIMIT.

http://sqlite.org/lang_select.html

De acuerdo con la misma documentación:

Si la expresión LÍMITE evalúa a un valor negativo, entonces no hay límite superior en el número de filas devueltas.

+0

Parece que voy a tener que hacer el límite long.MaxValue, gracias! –

Cuestiones relacionadas