Предложение ТОП используется для извлечения целого ряда или Х процентов TOP N записей из таблицы.
Примечание: Не все базы данных поддерживают предложение TOP. Например MySQL поддерживает предложение LIMIT, чтобы изъять ограниченное количество записей, в то время как Oracle использует команду ROWNUM для извлечения ограниченного количества записей.
Основной синтаксис TOP с SELECT будет выглядеть следующим образом.
SELECT TOP number|percent column_name(s) FROM table_name WHERE [condition]
Рассмотрим таблицу CUSTOMERS, имеющих следующие записи:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | | 3 | Oleg | 33 | Rostov | 34000.00 | | 4 | Masha | 35 | Moscow | 31500.00 | | 5 | Ruslan | 34 | Omsk | 43000.00 | | 6 | Dima | 32 | SP | 45000.00 | | 7 | Roma | 34 | SP | 10000.00 | +----+----------+-----+-----------+----------+
Следующий запрос выведет первые 3 записи из таблицы CUSTOMERS.
SQL> SELECT TOP 3 * FROM CUSTOMERS;
Это произведет следующий результат:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | | 3 | Oleg | 33 | Rostov | 34000.00 | +----+----------+-----+-----------+----------+
Если вы используете сервер MySQL, то здесь эквивалентный пример:
SQL> SELECT * FROM CUSTOMERS LIMIT 1;
Это произведет следующий результат:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | +----+----------+-----+-----------+----------+
Если вы используете сервер Oracle, то следующий блок кода имеет эквивалентный пример.
SQL> SELECT * FROM CUSTOMERS WHERE ROWNUM <= 2;
Это произведет следующий результат:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Maxim | 35 | Moscow | 21000.00 | | 2 | AndreyEx | 38 | Krasnodar | 55500.00 | +----+----------+-----+-----------+----------+