Pergunta

Eu tenho uma lista de registros que eu quero página através da utilização de LIMIT no entanto, o primeiro registro que é devolvido sem limite é também o identificador de raiz para o resto dos registros e eu preciso para mantê-lo para cada página. Isso é possível? (Eu só iria preferir não executar uma instrução SQL adicional)

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

limite de 3, 2 deve retornar ...

id  |  index  |  title
1   |  0      |  index of titles
4   |  1      |  title3
5   |  1      |  title4
Foi útil?

Solução

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

Se você tem uma chave composta em (index, id) (em MyISAM) ou apenas um índice em index (em InnoDB), a primeira consulta vai custar quase nada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top