Получить определенное количество записей базы данных из таблицы - PullRequest
0 голосов
/ 23 февраля 2011

Есть ли способ получить точное количество записей из примера базы данных.Например, скажем, у вас была таблица, в которой были только идентификатор и общее количество посещений столбцов.Допустим, вы хотите получить ровно 20 записей и отсортировать их по общему количеству посещений.Как бы вы пошли об этом?Я знаю, как отсортировать всю таблицу, но хотел бы иметь возможность собрать двадцать лучших посещений, а затем отсортировать их.Спасибо

O и сейчас я использую sqlite, но я знаю, что в будущем я буду также использовать mysql.Спасибо

Ответы [ 5 ]

0 голосов
/ 23 февраля 2011

Предложение LIMIT может использоваться для ограничения количества строк, возвращаемых оператором SELECT. LIMIT принимает один или два числовых аргумента, которые оба должны быть неотрицательными целочисленными константами, за исключением:

С двумя аргументами первый аргумент задает смещение первой строки, которую нужно вернуть, а второй - максимальное количество строк, которые нужно вернуть. Смещение исходной строки равно 0 (не 1):

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

Чтобы извлечь все строки от определенного смещения до конца набора результатов, вы можете использовать некоторое большое число для второго параметра. Этот оператор извлекает все строки от 96-й строки до последней:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

С одним аргументом значение указывает количество строк, возвращаемых с начала набора результатов:

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

Другими словами, LIMIT row_count эквивалентно LIMIT 0, row_count.

Все включено: http://dev.mysql.com/doc/refman/5.5/en/select.html лучшее объяснение для mysql, однако sqlite работает так же: http://www.sqlite.org/lang_select.html

0 голосов
/ 23 февраля 2011

Вам нужно использовать LIMIT, но вам нужно будет поместить все это в подзапрос, если вы собираетесь пересортировать 20 лучших по отдельным критериям. Так

SELECT * from <table> order by <total visits column> LIMIT 20

даст вам 20 лучших, но затем, чтобы отсортировать результаты, вы сделаете что-то вроде

SELECT * from 
  (SELECT * from <table> ORDER BY <total visits column> LIMIT 20) 
  ORDER BY <other criteria>
0 голосов
/ 23 февраля 2011

Использовать ORDER - LIMIT предложение

SELECT * FROM table ORDER BY field [ASC|DESC] LIMIT 20 OFFSET [offset value]
0 голосов
/ 23 февраля 2011

Попробуйте с:

SELECT * FROM TableName ORDER BY TotalVisits LIMIT 20
0 голосов
/ 23 февраля 2011

используя лимит для получения 20 лучших,

и, если вы хотите добавить другой вид, добавьте его после посещения столбца

нравится:

SELECT * FROM mytable ORDER BY visits DESC 

/*here put another order by field like date */
, date

LIMIT 20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...