Domanda

Ho un elenco di record che voglio sfogliare usando LIMIT ma il primo record che viene restituito senza LIMIT è anche l'identificatore di root per il resto dei record e devo tenerlo per ogni pagina. È possibile? (Preferirei semplicemente non eseguire un'istruzione sql aggiuntiva)

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

LIMIT 3, 2 dovrebbe tornare ...

id  |  index  |  title
1   |  0      |  index of titles
4   |  1      |  title3
5   |  1      |  title4
È stato utile?

Soluzione

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 hai una chiave composita su (index, id) (in MyISAM ) o solo un indice su index (in InnoDB ), la prima query non costerà quasi nulla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top