Frage

Ich habe eine Liste der Datensätze, die ich auf Seite will durch den Einsatz von LIMIT jedoch der erste Datensatz, der ohne LIMIT zurückgegeben wird, ist auch die Wurzel Kennung für den Rest der Aufzeichnungen und ich brauche es zu halten für jede Seite. Ist das möglich? (Ich würde einfach nicht lieber eine zusätzliche SQL-Anweisung auszuführen)

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 sollte ...

id  |  index  |  title
1   |  0      |  index of titles
4   |  1      |  title3
5   |  1      |  title4
War es hilfreich?

Lösung

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) haben oder einfach nur einen Index für index (in InnoDB), die erste Abfrage wird fast nichts kosten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top