Domanda

mi chiedo è possibile limitare il risultato di una richiesta SQL?

Per esempio, solo ritorno fino a 50 righe da:

  SELECT * FROM <table>

Grazie.

È stato utile?

Soluzione

Sì, questo è possibile. Ciò differisce tra i motori db.

Postgres:

SELECT * FROM <table> LIMIT 50

SQL Server:

SELECT TOP 50 * FROM <table> 

...

Altri suggerimenti

Si potrebbe utilizzare il clausola TOP :

SELECT TOP 50 * FROM <table>

Se il database non supporta lo si può provare anche LIMIT e ROWNUM ma ancora una volta questo dipenderà dal database in uso.

Sì, naturalmente, è possibile, in MySQL:

La clausola LIMIT può essere utilizzato per limitare il numero di righe restituite dall'istruzione SELECT. LIMIT richiede uno o due argomenti numerici, che devono essere sia costanti intero non negativo (tranne con istruzioni preparate).

Con due argomenti, i primi specifica l'argomento di offset della prima fila di ritorno, e la seconda specifica il numero massimo di righe da restituire. L'offset della riga iniziale è 0 (non 1):

SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15

Per recuperare tutte le righe da un offset fino alla fine del set di risultati certi, è possibile utilizzare alcuni gran numero per il secondo parametro. Questa dichiarazione recupera tutte le righe dalla fila 96 ° per l'ultimo:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

Con un argomento, il valore specifica il numero di righe da restituire a partire dall'inizio del set di risultati:

SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows

In altre parole, LIMIT row_count equivale a LIMIT 0, row_count.

In MySQL si dovrebbe utilizzare un LIMIT clausola

 SELECT * FROM <table> LIMIT 50

SQL standard

Come ho spiegato in questo articolo , SQL: 2008 standard fornisce la seguente sintassi per limitare il set di risultati SQL:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
FETCH FIRST 50 ROWS ONLY
  

Lo SQL: 2008. Top-N registra clausola è supportato in Oracle dal 12c, SQL Server dal 2012, e dal momento che PostgreSQL 8.4

SQL Server

Mentre SQL Server supporta SQL: 2008 Top-N sintassi standard, è necessario fornire la clausola OFFSET così:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
OFFSET 0 ROWS
FETCH FIRST 50 ROWS ONLY

In vecchie versioni di SQL Server, è possibile utilizzare TOP:

SELECT TOP 50
    title
FROM
    post
ORDER BY
    id DESC

Oracle 11g e le vecchie versioni

Prima della versione 12c, per andare a prendere i record Top-N, era necessario utilizzare una tabella derivata e la pseudocolonna ROWNUM:

SELECT *
FROM (
    SELECT
        title
    FROM
        post
    ORDER BY
        id DESC
)
WHERE ROWNUM <= 50

MySQL e PostgreSQL 8.3 o più anziani

Tradizionalmente, MySQL e PostgreSQL utilizzare la clausola LIMIT per limitare il set di risultati ai record Top-N:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
LIMIT 50
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top