web-dev-qa-db-fra.com

sélectionner les TOP N lignes d'un tableau

Je fais de la pagination, et je dois faire une requête et obtenir le résultat défini par slicing ..__, par exemple: je dois obtenir toutes les "premières" lignes dans la plage 20n <x <40n etc.

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;

et maintenant je dois faire mon glissement par colonne appelé ID.

Des suggestions comment alors? Je dois exécuter ma requête sur mysql, mssql et Oracle.

27
Night Walker

En supposant que votre taille de page est de 20 enregistrements et que vous voulez obtenir le numéro de page 2, voici comment procéder:

SQL Server, Oracle:

SELECT *   -- <-- pick any columns here from your table, if you wanna exclude the RowNumber
FROM (SELECT ROW_NUMBER OVER(ORDER BY ID DESC) RowNumber, * 
      FROM Reflow  
      WHERE ReflowProcessID = somenumber) t
WHERE RowNumber >= 20 AND RowNumber <= 40    

MySQL:

SELECT * 
FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 20 OFFSET 20
48
Bassam Mehanni

En MySql, vous pouvez obtenir 10 lignes à partir de la ligne 20 en utilisant:

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
20
Eric
select * from table_name LIMIT 100

rappelez-vous cela ne fonctionne qu'avec MYSQL

0
Pravin