2009-08-04 4 views
1

Ich habe eine Liste von Datensätzen, die ich mit LIMIT durchblättern möchte aber der erste Datensatz, der ohne LIMIT zurückgegeben wird, ist auch die Stamm-ID für den Rest der Datensätze und ich brauche um es für jede Seite zu behalten. Ist das möglich? (Ich würde es vorziehen, nicht nur eine zusätzliche SQL-Anweisung ausführen)mysql/php: Halten eines zusätzlichen Datensatzes beim Paging

id | index | title 
1 | 0  | index of titles 
2 | 1  | title1 
3 | 1  | title2 
4 | 1  | title3 
5 | 1  | title4 

LIMIT 3, 2 zurückkehren soll ...

id | index | title 
1 | 0  | index of titles 
4 | 1  | title3 
5 | 1  | title4 

Antwort

3
SELECT * 
FROM (
     SELECT * 
     FROM mytable 
     WHERE index = 0 
     ORDER BY 
       index, id 
     LIMIT 1 
     ) q 
UNION ALL 
     (
     SELECT * 
     FROM mytable 
     WHERE index = 1 
     ORDER BY 
       index, id 
     LIMIT 3, 2 
     ) q2 

Wenn Sie einen zusammengesetzten Schlüssel auf (index, id) (in MyISAM) oder nur ein Index auf index (in InnoDB), wird die erste Abfrage fast nichts kosten.

+0

vielen dank! – EddyR