SQL: clausola TOP, LIMIT o ROWNUM

L'SQL TOP la clausola viene utilizzata per recuperare un numero TOP N o X record percentuali da una tabella.

Note- Tutti i database non supportano la clausola TOP. Ad esempio MySQL supporta l'estensioneLIMIT clausola per recuperare un numero limitato di record mentre Oracle utilizza l'estensione ROWNUM comando per recuperare un numero limitato di record.

Sintassi

La sintassi di base della clausola TOP con un'istruzione SELECT sarebbe la seguente.

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE [condition]

Esempio

Considera la tabella CLIENTI con i seguenti record:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

La seguente query è un esempio sul server SQL, che recupera i primi 3 record dalla tabella CUSTOMERS.

SQL> SELECT TOP 3 * FROM CUSTOMERS;

Ciò produrrebbe il seguente risultato:

+----+---------+-----+-----------+---------+
| ID | NAME    | AGE | ADDRESS   | SALARY  |
+----+---------+-----+-----------+---------+
|  1 | Ramesh  |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan  |  25 | Delhi     | 1500.00 |
|  3 | kaushik |  23 | Kota      | 2000.00 |
+----+---------+-----+-----------+---------+

Se stai usando il server MySQL, ecco un esempio equivalente:

SQL> SELECT * FROM CUSTOMERS
LIMIT 3;

Ciò produrrebbe il seguente risultato:

+----+---------+-----+-----------+---------+
| ID | NAME    | AGE | ADDRESS   | SALARY  |
+----+---------+-----+-----------+---------+
|  1 | Ramesh  |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan  |  25 | Delhi     | 1500.00 |
|  3 | kaushik |  23 | Kota      | 2000.00 |
+----+---------+-----+-----------+---------+

Se stai usando un server Oracle, il seguente blocco di codice ha un esempio equivalente.

SQL> SELECT * FROM CUSTOMERS
WHERE ROWNUM <= 3;

Ciò produrrebbe il seguente risultato:

+----+---------+-----+-----------+---------+
| ID | NAME    | AGE | ADDRESS   | SALARY  |
+----+---------+-----+-----------+---------+
|  1 | Ramesh  |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan  |  25 | Delhi     | 1500.00 |
|  3 | kaushik |  23 | Kota      | 2000.00 |
+----+---------+-----+-----------+---------+