2010-12-11 10 views
8

Ich habe eine Tabelle mit 2 Feldern DATUM und Bedeutung. Jetzt möchte ich diese beiden Felder in DESCENDING ORDER sortieren, so dass die Zeilen für jedes Datum nach Wichtigkeit geordnet sind. wenn richtig sortiert, Zeilen sollten wie folgt zurückgeben Zum Beispiel:Sortierung mehrerer Felder in MySQL

Dec 3, 2010 - 10 
Dec 3, 2010 - 10 
Dec 3, 2010 - 8 
Dec 3, 2010 - 7 
Dec 3, 2010 - 3 
Dec 3, 2010 - 1 

Dec 2, 2010 - 10 
Dec 2, 2010 - 9 
Dec 2, 2010 - 3 

Dec 1, 2010 - 8 
Dec 1, 2010 - 5 
Dec 1, 2010 - 5 
Dec 1, 2010 - 4 

Gibt es eine effiziente Art und Weise, dies zu erreichen mit nur einer Abfrage-Anweisung?

Antwort

25
SELECT * FROM yourtable 
ORDER BY `DATE` DESC, `IMPORTANCE` DESC 
+5

@Frank, ist DATE ein Stichwort, und in einigen Fällen, wenn Sie eine Spalte mit speziellen Wörter nennen, Ihre Anfragen Fehler haben könnten. '\' 'entgeht ihm. –

+3

Nein, DATE ist kein Schlüsselwort und 'gehört nicht zu den ANSI SQL-Standards. Verwenden Sie doppelte Anführungszeichen, "um Objektnamen zu entkommen, MySQL kennt auch doppelte Anführungszeichen, es heißt ANSI_QUOTES. Überprüfen Sie http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html und http: // dev. mysql.com/doc/refman/5.5/en/server-sql-mode.html#sqlmode_ansi_quotes –

+1

ANSI_QUOTES ist nicht das Standardverhalten von Mysql und ermöglicht das Ändern der Syntax, die zum Abgrenzen von Literalstrings benötigt wird, wodurch sehr wahrscheinlich ein Großteil der Software zerstört wird Entwickelt für Mysql. – tacone

5

Eigentlich können Sie einfach so viele Felder zu ORDER BY hinzufügen, wie Sie möchten.

, dass so etwas sein würde:

SELECT * FROM table ORDER BY date DESC, importance DESC