mysql / php: eine zusätzliche Aufzeichnung während Paging halten
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
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