Я хочу знать альтернативу ключевого слова TOP, как в MySQL. Я прочитал о TOP в SQL Server.
Есть ли альтернатива этому в MySQL или какой-либо другой метод в MySQL, из которого мы можем получить такую же функциональность?
Ответ 1
Заказ и ограничение результатов:
SELECT field1, field2
FROM myTable
ORDER BY field1 ASC
LIMIT 10
Ответ 2
Вы можете использовать ключевое слово LIMIT (см. документацию инструкции SELECT) - она идет в конце запрос:
select *
from your_table
where ...
limit 10
чтобы получить верхние 10 строк
Или даже:
select *
from your_table
where ...
limit 5, 10
Чтобы получить 10 строк, начинаем с 6-го (т.е. получая строки с 6 по 15).
Ответ 3
Я знаю, на этот вопрос был дан ответ, я хотел бы добавить некоторые соображения производительности.
Оператор TOP в MySQL не переводится с помощью LIMIT.
Предположим, вы хотите, чтобы последние 10 человек были вставлены в db:
SELECT name, id
FROM persons
ORDER BY id DESC
LIMIT 10
Однако при использовании тысяч строк это может стать чрезвычайно медленным.
Более быстрое решение будет получать текущее число X строк:
SELECT COUNT(*) FROM persons
и используйте это число для запроса последних 10:
SELECT name, id
FROM persons
LIMIT x-10,10
Таким образом, предел пропустит первые строки X-10 и вернет следующие 10.
Для меня это было в 100 раз быстрее, чем сортировка колонки, но это только мой опыт.