Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изберете N брой записи от базата данни на MySQL по пагинация?

първите сто

 SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100

следващите сто

 SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100

вие сте много наблюдателни относно поставянето на поръчката от

ОБЯСНЯВАНО ЛИМИТИРАНЕТО: LIMIT изявлението НЕ е WHERE клауза. Той не избира по id нито всъщност по каквито и да е критерии (там where клауза прави това) Вместо limit клаузата просто гарантира, че ви се връща част от block на резултати, които са подмножество на "всичко". Ето защо е важно да се спомене order by всеки път, така че всяко следващо повикване ще ви даде правилното парче от блока данни по ред и можете да 'следващ', 'следващ', 'следващ' през тях

Напр.:за неподредената таблица this_table :

+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  1    |     bob     |
|  12   |     fish    |
|  112  |     pink    |
|  2    |     cat     |
|  8    |     dog     |
|  56   |     blue    |
|  88   |     grey    |
|  87   |     red     |
+-------+-------------+

избраните се връщат както по-долу:

SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  1    |     bob     |
|  2    |     cat     |
|  8    |     dog     |
|  12   |     fish    |
|  56   |     blue    |
+-------+-------------+

и

SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  87   |     red     |
|  88   |     grey    |
|  112  |     pink    |
+-------+-------------+

забележете липсата на редове 9 и 10, това е умишлено и показва, че MySQL работи по предназначение

между другото трябва да погледнете и добавянето на индекс към id това МАСИВНО ще увеличи скоростта на тези избори

ALTER TABLE <table_name> ADD INDEX `id` (`id`)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте една заявка за изтегляне от множество таблици

  2. Мащабиране на временните записи в базата данни, за да се преброят общите суми, за да се спре прекомерният абонамент

  3. Не мога да се свържа с отдалечена база данни с помощта на php

  4. Сортиране по ред на стойностите в оператор select в клауза в mysql

  5. Как да проверите дали стойността съществува в MySQL база данни