web-dev-qa-db-fra.com

Comment puis-je sélectionner des lignes par plage?

Dupliquer possible:
Sélectionnez une instruction dans SQLite reconnaissant le numéro de ligne

Par exemple, SELECT * FROM table WHERE [row] BETWEEN x AND y

Comment cela peut-il être fait? J'ai lu un peu mais je n'ai rien trouvé de particulièrement correct.

Imaginez une liste dans laquelle vous souhaitez que les résultats soient paginés avec une quantité X de résultats. Ainsi, pour la page 10, vous aurez besoin des résultats des lignes 10 * X à 10 * X + X. Plutôt que d'afficher TOUS les résultats en une fois.

20
rtheunissen

Pour mysql vous avez une limite, vous pouvez lancer la requête comme suit:

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

Pour Oracle, vous pouvez utiliser rownum

Voir la syntaxe et l'utilisation de mysql select pour limithere .

Pour SQLite, vous avez limit, offset. Je n'ai pas utilisé SQLite mais je l'ai vérifié sur Documentation SQLite . Vérifiez l'exemple pour SQLite ici .

46
Nandkumar Tekale

Vous pouvez utiliser rownum :

SELECT * FROM table WHERE rownum > 10 and rownum <= 20
9
Majid Laissi

Après votre clarification, vous recherchez une limite:

SELECT * FROM `table` LIMIT 0, 10 

Cela affichera les 10 premiers résultats de la base de données.

SELECT * FROM `table` LIMIT 5, 5 .

Affichera 5-9 (5,6,7,8,9)

La syntaxe suit le modèle:

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

Le SQL pour sélectionner les lignes où column est entre deux valeurs est:

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

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

Si vous voulez aller sur le numéro de ligne, vous pouvez utiliser rownum:

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

Cependant, nous avons besoin de savoir quel moteur de base de données vous utilisez car rownum est différent pour la plupart.

5
Pez Cuckow

Utiliser entre condition

SELECT *
FROM TEST
WHERE COLUMN_NAME BETWEEN x AND y ;

Ou en utilisant juste des opérateurs,

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

Avez-vous essayé votre propre code?
Cela devrait fonctionner:

SELECT * FROM people WHERE age BETWEEN x AND y
1
Pharaoh

Utilisez la clause LIMIT:

/* rows x- y numbers */
SELECT * FROM tbl LIMIT x,y;

se référer: http://dev.mysql.com/doc/refman/5.0/en/select.html

1
Rajshri

En supposant que id est la clé primaire de la table:

SELECT * FROM table WHERE id BETWEEN 10 AND 50

Pour les 20 premiers résultats 

SELECT * FROM table order by id limit 20;
0
Raghvendra Parashar