sql >> Databasteknik >  >> RDS >> Mysql

Hur väljer man pagineringsmässigt N antal poster från MySQL-databasen?

första hundra

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

nästa hundra

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

du är väldigt observant på att lägga beställningen innan

GRÄNSUTTALANDET FÖRKLADE: LIMIT satsen är INTE en WHERE klausul. Den väljer inte med id inte heller efter några kriterier, (där where satsen gör det) Istället limit klausul säkerställer helt enkelt att du får tillbaka en del av block av resultat som är en delmängd av "allt". Därför är det viktigt att nämna en order by varje gång, så att varje efterföljande samtal ger dig rätt del av datablocket i ordning, och du kan "nästa", "nästa", "nästa" genom dem

EG:för den oordnade tabellen this_table :

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

valen returnerar enligt nedan:

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

och

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

märk avsaknaden av raderna 9 och 10, detta är avsiktligt och visar att MySQL fungerar som avsett

för övrigt bör du också titta på att lägga till ett index på id detta kommer att öka hastigheten för dessa val MASSIVT

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


  1. SQL Server - anslut med Windows-autentisering

  2. Hur man använder EXECUTE FORMAT ... ANVÄNDER i postgres-funktionen

  3. SQL Server - IN-klausul med flera fält

  4. Vårens lagrade procedur - resultat som kommer tillbaka från proceduren är alltid tomma