2012-03-27 6 views
2

Ich brauche die letzten 3 Datensätze einer Tabelle und setze sie in aufsteigender Reihenfolge.Wie wird bei gleicher Spalte 2x bestellt?

Die folgende Abfrage gibt die letzten 3 Datensätze der Tabelle zurück, sortiert sie aber nicht.

select column_1, column_2 from table_name order by id desc limit 3 

Gibt es eine Möglichkeit, diese Datensätze auch zu sortieren, ohne eine Unterabfrage zu verwenden?

versuchte ich

select column_1, column_2 from table_name order by id desc, id asc limit 3 

aber es hat nicht funktioniert.

+2

warum nicht mit Unterabfrage? es wird einfach sein und keine Ausgabe-Performance, weil nur 3 Datensätze ... –

Antwort

-1

Wenn Sie PDO verwenden:

$stmt = $dbh->prepare('SELECT * FROM your-table ORDER BY date DESC Limit 3'); 
+1

-1: Einfach perl-Code um die Abfrage hinzufügen ist keine Antwort. Wenn Sie sie auf der Client-Seite sortieren möchten, sollten Sie das sagen und Sie sollten den Code anzeigen, der sie sortiert. –

+0

Es ist 'PHP', da die Frage markiert ist. Es ist ein PDO-Abfrage-Beispiel, das zeigt, dass der PDO-Code in diesem Fall irrelevant ist. –

+0

Ja, das PHP-Tag ist falsch - es gibt nichts PHP-spezifisches zu dieser Frage, und ich bin sicher, dass das Hinzufügen dieses PDO-Codes den Fragesteller nicht näher an die richtige Antwort gebracht hat. –

4

Aus meiner Sicht glaube ich nicht, dass jede andere Art und Weise ohne Unterabfrage es

machen leicht unter Versuchen:

SELECT a.* from 
(SELECT column_1, column_2 FROM table_name ORDER BY id DESC LIMIT 3) as a 
ORDER BY a.id ASC 

Unterabfrage ist keine schlechte Idee in dieser Situation, in der Sie es mit limit verwenden.

+0

Sie bestehen auf dieser Version, die 2 Fehler hat. MySQL wird sich beschweren, dass es keinen Alias ​​für die Unterabfrage gibt und "ORDER BY" keine ID finden kann. –

+0

OK. Verwendeter Alias ​​mit Unterabfrage.Versuche mit aktualisierter Antwort –