Ich habe eine Tabelle, die Spalten ID, NAME, PREIS und DATE besteht.MySQL ORDER BY + LIMIT + OFFSET-Anweisungen: wie zuerst OFFSET und dann sortieren mit ORDER BY
Ich versuche eine Navigation im Pager-Stil zu schreiben, weil es viele Einträge in der Tabelle gibt, also war es unangenehm, die gesamte SELECT-Ausgabe anzusehen.
Ich habe folgende Anfrage geschrieben:
SELECT id
, name
, price
, date
FROM mytable
ORDER
BY name asc
LIMIT 30 OFFSET _here's_my_offset_depending_on_the_current_position_
Dies ist nur, wie im Beispiel funktioniert gut. Wenn ich versuche, es zu sortieren, sagen wir, nach Preis, scheint es, dass MYSQL zuerst die ganze Tabelle mit ORDER BY sortiert und erst nachdem es einen Offset gemacht hat.
Wie ändere ich dieses Verhalten, mit anderen Worten, wie mache ich einen Offset und nur dann sortiere ich die resultierenden Zeilen nach dem, was ich mag?
eine Unterabfrage verwenden. –
Sortieren Sie auf der Präsentation, nicht in SQL, wenn Sie nur das Subresult sortieren möchten. Natürlich paginiert der Pager immer noch nach der Reihenfolge der Namen, was das Ergebnis etwas merkwürdig erscheinen lässt. – thst
Können Sie erklären, warum Sie das tun wollen? Wenn Sie eine Seitenumbruch machen möchten, ist Ihre Abfrage in Ordnung, wenn Sie tun, was Sie tun möchten (und Sie müssen eine Unterabfrage verwenden), werden Ihre Ergebnisse über Ihre verschiedenen Seiten sehr inkonsistent sein .... –