første hundrede
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100
næste hundrede
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100
du er meget opmærksom på at lægge ordren ind
Grænsesætningen ER FORKLART: LIMIT
sætning er IKKE en WHERE
klausul. Den vælger ikke efter id
heller ikke efter nogen kriterier (der where
klausulen gør det) I stedet for limit
klausulen sikrer blot, at du får returneret en del af block
af resultater, der er en delmængde af "alt". Derfor er det vigtigt at nævne en order by
hver gang, så hvert efterfølgende opkald giver dig den rigtige del af datablokken i rækkefølge, og du kan 'næste', 'næste', 'næste' gennem dem
EG:for den uordnede tabel this_table
:
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 12 | fish |
| 112 | pink |
| 2 | cat |
| 8 | dog |
| 56 | blue |
| 88 | grey |
| 87 | red |
+-------+-------------+
valgene returnerer som nedenfor:
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 2 | cat |
| 8 | dog |
| 12 | fish |
| 56 | blue |
+-------+-------------+
og
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
| id | value |
+-------+-------------+
| 87 | red |
| 88 | grey |
| 112 | pink |
+-------+-------------+
Bemærk manglen på række 9 og 10, dette er bevidst og viser, at MySQL fungerer efter hensigten
i øvrigt bør du også se på at tilføje et indeks på id
dette vil MASSIVT øge hastigheden af disse valg
ALTER TABLE <table_name> ADD INDEX `id` (`id`)