Question

J'ai une liste d'enregistrements que je souhaite parcourir à l'aide de LIMIT. Toutefois, le premier enregistrement renvoyé sans LIMIT est également l'identificateur racine du reste des enregistrements et je dois le conserver pour chaque page. Est-ce possible? (Je préférerais simplement ne pas exécuter une instruction SQL supplémentaire)

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
Était-ce utile?

La solution

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) (dans MyISAM ) ou simplement un index sur index (dans InnoDB ), la première requête ne coûtera presque rien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top