selezionare le prime N righe da una tabella

Sto facendo alcuni paging, e ho bisogno di fare alcune query e ottenere il risultato forma definita di affettare .
per esempio: ho bisogno di ottenere tutti i “top” righe in gamma 20n < x < 40n etc.

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

e ora ho bisogno di fare il mio scorrevole da colonna ID .

Suggerimenti su come così ? Ho bisogno di eseguire query su mysql, mssql e oracle.

  • Vedere la LIMIT clausola dev.mysql.com/doc/refman/5.1/en/select.html
  • Perché il downvote? Perché non mettere il tuo commento in risposta? Così tante domande.
  • Sono abbastanza certo che non ottenere qualcosa che funziona in tutti e 3. Si deve usare rownum in Oracle.
  • Si sono corretti. FETCH FIRST # ROWS è ora ANSI, ma DB2 IIRC è l’unico attualmente supportata.
  • fatto u prova a cercare? (tanti top-n impaginazione domande)
InformationsquelleAutor Night Walker | 2012-02-05



3 Replies
  1. 49

    Supponendo che la dimensione della pagina è di 20 record, e vuoi ottenere il numero di pagina 2, ecco come si dovrebbe fare:

    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
  2. 22

    In MySql, è possibile ottenere 10 righe a partire dalla riga 20 uso:

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

Lascia un commento