Frage

Ich frage mich, ob es ein einfacher Weg war mit nur einer SQL-Anweisung der letzten drei Ergebnisse in der Tabelle zurückzukehren, aber in dieser Reihenfolge, dh wenn es ein hundered Ergebnisse sind in der Größenordnung von 98 zurückkehren würde, 99, 100 nicht einfach Bestellung von id DESC und Grenze 3, die um 100, 99, 98

zurückkehren

Jede Hilfe sehr geschätzt.

P. S. in diesem Fall kann sagen, ich weiß nicht, die Menge der Ergebnisse und nicht wirklich will, 2 SQL-Anfragen senden nur die Menge zu finden (für alle OFFSET Antworten).

War es hilfreich?

Lösung

Eine Möglichkeit wäre DESC zu verwenden und sie dann einfach irgendwie wieder:

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id

Andere Tipps

Zwei Optionen, schätze ich.

  1. Sie könnten DESC verwenden sie in umgekehrter Reihenfolge zurückzukehren, wie Sie gesagt, und umgekehrt nur die Reihenfolge wieder in den Anwendungscode. Dies ist möglicherweise die effizienteste, wie Sie es in einer einzigen Abfrage tun können, und es kann möglicherweise benötigen nur drei Zeilen eines Index zu lesen.

  2. Sie können zunächst die Anzahl der Ergebnisse in der Tabelle finden, dann ein LIMIT tun , 3

Ist es in Ordnung, wenn Sie es nur auf die ursprüngliche Reihenfolge Flip zurück?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top