2012-12-28 15 views
17

Powiel możliwe:
Select statement in SQLite recognizing row numberJak wybrać wiersze według zakresu?

Na przykład SELECT * FROM table WHERE [row] BETWEEN x AND y

Jak można to zrobić? Zrobiłem trochę czytania, ale nie znalazłem niczego konkretnie poprawnego.

Wyobraźmy sobie listę, w której chcesz wyników stronicowanych o kwotę X wyników, więc na stronie 10 będzie trzeba rezultaty z wierszy 10 do 10 * X * X + X. Zamiast wyświetlać wszystkie wyniki na jednej iść

+0

Nie masz na myśli kolumny? Jeśli zmienisz [wiersz] za pomocą [kolumna], otrzymasz zestaw wyników ze wszystkimi wierszami, które mają wartość w danej kolumnie między X i Y. Zobacz także: http://www.w3schools.com/sql/sql_between. asp –

+0

co chcesz zrobić? –

+3

Chyba chce czegoś takiego jak "daj mi wiersz 20 - 50" – SomeJavaGuy

Odpowiedz

37

MySQL masz limitu, można ogień zapytanie jako:

SELECT * FROM table limit 100` -- get 1st 100 records 
SELECT * FROM table limit 100, 200` -- get 200 records beginning with row 101 

Dla Oracle można użyć rownum

Zobacz mysql select składnia i wykorzystanie dla limithere.

Dla SQLite masz limit, offset. Nie używałem SQLite, ale sprawdziłem to na SQLite Documentation. Sprawdź przykład dla SQLite here.

+0

To jest niebezpieczne. Myślę, że pytanie dotyczy zakresu kolumny, a nie zakresu liczby wierszy –

1

Czy próbowałeś swój własny kod?
To powinno działać:

SELECT * FROM people WHERE age BETWEEN x AND y 
6

Po swojej wyjaśnienia której szukasz limit:

SELECT * FROM `table` LIMIT 0, 10 

Spowoduje to wyświetlenie pierwszych 10 wyników z bazy danych.

SELECT * FROM `table` LIMIT 5, 5 . 

będą wyświetlane 5-10

składnia następujący wzór:

SELECT * FROM `table` LIMIT [row to start on], [how many to include] . 

SQL dla wybierania wierszy, gdzie kolumnajest pomiędzy dwiema wartościami wynosi:

SELECT column_name(s) 
FROM table_name 
WHERE column_name 
BETWEEN value1 AND value2 

Patrz: http://www.w3schools.com/sql/sql_between.asp

Jeśli chcesz iść na liczbę wierszy można użyć rownum:

SELECT column_name(s) 
FROM table_name 
WHERE rownum 
BETWEEN x AND y 

Jednak musimy wiedzieć, który silnik bazy danych używasz jako rownum jest różny dla większości.

+0

chce go przez zakres, a nie przez jego wartość, chyba – SomeJavaGuy

2

Korzystanie Między stanie

SELECT * 
FROM TEST 
WHERE COLUMN_NAME BETWEEN x AND y ; 

lub przy użyciu operatorów Just,

SELECT * 
FROM TEST 
WHERE COLUMN_NAME >= x AND COLUMN_NAME <= y; 
9

Można użyć rownum:

SELECT * FROM table WHERE rownum > 10 and rownum <= 20 
+0

@ paranoid-android chce coś dla SQLite. Popchnąłeś we właściwym kierunku, więc znalazłem odpowiedź http://stackoverflow.com/questions/12233091/sqlite-equivalent-for-oracles-rownum, która powinna dla niego działać. – PhiLho

+0

@PhiLho ktoś właśnie dodał znacznik SQLite :) –

0

Zakładając id jest kluczem podstawowym tabeli:

SELECT * FROM table WHERE id BETWEEN 10 AND 50 

Dla pierwszych 20 wyników

SELECT * FROM table order by id limit 20; 
+0

id, ale co, jeśli rekordy zostaną usunięte? Nie ma gwarancji, że id od 1 do 20 da ci 20 wyników. – rtheunissen

+0

@paranoid: Edytowałem moją odpowiedź na Twoje zapytanie ... dzięki –

Powiązane problemy