2012-12-28 21 views
17

Eventuali duplicati:
Select statement in SQLite recognizing row numberCome posso selezionare le righe per intervallo?

Per esempio, SELECT * FROM table WHERE [row] BETWEEN x AND y

Come si può fare? Ho letto alcune letture ma non ho trovato nulla di specificamente corretto.

Immaginate una lista in cui si desidera che i risultati di paging di un importo X di risultati, quindi per pagina 10 si avrebbe bisogno di risultati da righe 10 * X a 10 * X + X. Invece di visualizzare tutti i risultati in un colpo solo

+0

Non intendi colonna? Se cambi la [riga] con [colonna], riceverai un set di risultati con tutte le righe che hanno un valore in quella particolare colonna tra X e Y. Vedi anche: http://www.w3schools.com/sql/sql_between. asp –

+0

cosa vuoi fare? –

+3

immagino che lui voglia qualcosa come "dammi la riga 20-50" – SomeJavaGuy

risposta

37

per MySQL è stato limite, si può sparare interrogazione come:

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

Per Oracle è possibile utilizzare rownum

Vedi mysql selezionare sintassi e l'utilizzo per limithere.

Per SQLite, è disponibile limit, offset. Non ho usato SQLite ma l'ho controllato su SQLite Documentation. Verifica l'esempio di SQLite here.

+0

Questo è pericoloso. Penso che la domanda chieda l'intervallo di colonne e non sia l'intervallo di conteggio delle righe –

1

Hai provato il tuo codice?
Questo dovrebbe funzionare:

SELECT * FROM people WHERE age BETWEEN x AND y 
6

In seguito alla vostra chiarimento siete alla ricerca di limite:

SELECT * FROM `table` LIMIT 0, 10 

Questo mostrerà i primi 10 risultati dal database.

SELECT * FROM `table` LIMIT 5, 5 . 

Visualizzerà 5-10

La sintassi segue lo schema:

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

L'SQL per righe selezione in cui una colonnaè compreso tra due valori è:

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

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

Se si vuole andare sul numero di riga è possibile utilizzare rownum:

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

Tuttavia abbiamo bisogno di sapere quale motore di database che si sta utilizzando come rownum è diverso per la maggior parte.

+0

lo vuole per distanza, e non per il suo valore, immagino che – SomeJavaGuy

2

Utilizzando Tra condizione

SELECT * 
FROM TEST 
WHERE COLUMN_NAME BETWEEN x AND y ; 

o utilizzando gli operatori soli,

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

È possibile utilizzare rownum:

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

@ paranoico-android voglia qualcosa per SQLite. Hai spinto nella giusta direzione, quindi ho trovato la http://stackoverflow.com/questions/12233091/sqlite-equivalent-for-oracles-rownum risposta che dovrebbe funzionare per lui. – PhiLho

+0

@PhiLho qualcuno ha appena aggiunto il tag SQLite :) –

0

Supponendo id è la chiave primaria della tabella:

SELECT * FROM table WHERE id BETWEEN 10 AND 50 

Per primi 20 risultati

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

id, ma cosa succede se i record vengono cancellati? Non vi è alcuna garanzia che l'id da 1 a 20 possa fornire 20 risultati. – rtheunissen

+0

@paranoid: ho modificato la mia risposta per la tua richiesta ... grazie –

Problemi correlati