2012-05-08 6 views
15

Próbuję kwerendy bazy danych sql lite tylko z przesunięciem i bez limitu.SqlLite z pominięciem (przesunięcie) tylko (nie limit)

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

Mogę wykonać zapytanie offsetowe, gdy mam limit jednak (LIMIT 10 OFFSET 10).

Oto błąd, który daje mi sql lite.

SQLite error near "10": syntax error 

Wszelkie pomysły? Z góry dziękuję!

Odpowiedz

33

Po prostu ustaw LIMIT na -1.

Na przykład:

SELECT * FROM table LIMIT -1 OFFSET 10 
+0

Byłoby wspaniale, gdyby Mysql wdrożył ten sam pomysł. – elipoultorak

+0

Sądzę, że -1 jest częściej widziane niż 2^64-1, i krótsze, ale pod względem ogólnej czystości są one magicznymi liczbami. Czystym rozwiązaniem byłoby oddzielenie limitu i przesunięcia, biorąc pod uwagę, że służą one odrębnym przypadkom użycia. Czekolada i mleko świetnie się razem układają, ale czasami chcę bez siebie! – aaaaaa

7

W SQL w rozumieniu strony SQLite zauważysz, że OFFSET nie jest zrozumiany bez LIMIT.

http://sqlite.org/lang_select.html

Według tej samej dokumentacji:

Jeśli wyrażenie LIMIT ocenia się wartość ujemną, to nie ma górnej granicy liczby wierszy zwracanych.

+0

Wygląda na to będę musiał dokonać limit long.MaxValue, dzięki! –

Powiązane problemy