2009-08-04 5 views
1

J'ai une liste d'enregistrements que je veux parcourir en utilisant LIMIT mais le premier enregistrement qui est retourné sans LIMIT est aussi l'identifiant racine pour le reste des enregistrements et j'ai besoin pour le garder pour chaque page. Est-ce possible? (Je préfère ne pas simplement d'exécuter une instruction SQL supplémentaire)mysql/php: conserver un enregistrement supplémentaire pendant la pagination

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

LIMITE 3, 2 devrait revenir ...

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

Répondre

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 

Si vous avez une clé composite sur (index, id) (en MyISAM) ou juste un index sur index (en InnoDB), la première requête ne coûtera presque rien.

+0

merci beaucoup! – EddyR

Questions connexes