#mysql
#mysql
Вопрос:
Учитывая некоторые записи, как запросить следующее:
- Первые 10 записей, следующие 10 записей и т.д.?
- Последние 10 записей, от второй до последней 10 записей и т.д.?
Ответ №1:
LIMIT
это то, что вам нужно http://dev.mysql.com/doc/refman/5.1/en/select.html
Первые 10:
SELECT * FROM TABLE LIMIT 10;
Второй 10:
SELECT * FROM TABLE LIMIT 10,10;
Третий 10:
SELECT * FROM TABLE LIMIT 20,10;
«Последние 10» имеют значение только при упорядочивании строк. В этом случае вы меняете порядок и берете первые 10, используя первый оператор, указанный выше. Если вы хотите «предпоследний 10», то вы делаете то же самое с обратным порядком, а затем используете второй оператор сверху.
Надеюсь, это поможет!
Комментарии:
1. Что, если я хочу сохранить порядок, когда получу последние 10?
2. Простой способ — просто перевернуть порядок обратно, как только они у вас есть, поскольку их всего 10, что довольно дешево сделать. Если вы действительно хотите сделать это в SQL, вам нужно знать общее количество строк, чтобы вы могли вычесть из этого 10 и использовать его в качестве смещения
LIMIT (total-10),10
3. Как мне включить общее количество строк в ПРЕДЕЛЬНУЮ часть?
4. Сначала вы получите эту информацию извне этого запроса. Итак, запустите COUNT() для этой таблицы, получите результат в одну строку. Сохраните информацию в переменной, вычтите 10 из числа, которое у вас есть в этой переменной, а затем сгенерируйте новый запрос и выполните его.
5. Вроде того. На самом деле это не стоит такой сложности. Последние 5 строк: gist.github.com/1306594
Ответ №2:
Используйте LIMIT
предложение.
Примерами могут быть:
/** First 10 records **/
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10;
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 0,10;
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10 OFFSET 0;
/** The records 11-20 **/
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10, 10;
/** The records 101-110 **/
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 100, 10;
SELECT * FROM `table` ORDER BY SomeColumn LIMIT 10 OFFSET 100;
/** The last 10 records (in reverse order than previous queries) **/
SELECT * FROM `table` ORDER BY SomeColumn DESC LIMIT 10;
SELECT * FROM `table` ORDER BY SomeColumn DESC LIMIT 10 OFFSET 10;
Комментарии:
1. Ограничение 10 100 займет 100 записей, начиная с позиции 10. Не записывает 10-20.
2. Иногда быстрый ввод меня раздражает, исправлено. Спасибо.
3. Все еще неправильно.. теперь вы получаете записи 100-110. «ВЫБЕРИТЕ * ИЗ
table
LIMIT 10, 10; /** Записи 10-20 **/»
Ответ №3:
Используйте LIMIT
предложение
-
Первые 10 записей
... LIMIT 10
-
Следующие 10 записей
... LIMIT 10, 10
Используйте это в сочетании с COUNT()
запросом в вашем приложении, чтобы найти общее количество строк. Затем вы можете использовать это число и количество желаемых строк на странице для построения вашей разбивки на страницы.
Комментарии:
1. Можете ли вы показать, как я бы включил
COUNT()
при попытке получить последние 10 и т. Д.?
Ответ №4:
Я полагаю, что вы можете использовать LIMIT и OFFSET и ORDER BY для достижения этой цели. http://dev.mysql.com/doc/refman/5.0/en/select.html
Комментарии:
1. Я хочу поддерживать порядок записей при получении последних 10, от второго до последнего 10 и т.д.
Ответ №5:
одним из решений может быть использование limit 0,9 в вашем запросе
выберите * из таблицы, где id < 50 limit 0,9
затем вы добавляете несколько кнопок, увеличивающих / уменьшающих ваш лимит
Ответ №6:
PHP-код :
$limit = 10;
$page = 1;
$from = ( $page - 1 ) * $limit;
$SQL = "SELECT * FROM `table` LIMIT $from,$limit";