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`)