2010-12-11 12 views
8

私は2つのフィールドに日付と重要度のテーブルを持っています。ここでは、これらのフィールドをDESCENDING ORDERでソートして、行がIMPORTANCEによって各日付に並べ替えられるようにします。正しい並べ替えた場合、行は次のように返す必要があります:複数のフィールドを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 

は、唯一のクエリステートメントでこれを達成するための効率的な方法はありますか?

答えて

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

@Frankは、DATEはキーワードであり、いくつかのケースでは、あなたは、あなたのクエリがエラーを持っている可能性があり、特別な言葉で列に名前を付ける場合。 '\' 'はそれをエスケープします。 –

+3

いいえ、DATEはキーワードではなく、 'ANSI SQL標準の一部ではありません。 MySQLはオブジェクト名をエスケープするために二重引用符を使用しますが、MySQLは二重引用符も知っていますので、ANSI_QUOTESと呼ばれます。http://dev.mysql.com/doc/refman/5.5/en/reserved-words.htmlとhttp:// devを参照してください。 mysql.com/doc/refman/5.5/en/server-sql-mode.html#sqlmode_ansi_quotes –

+1

ANSI_QUOTESはMysqlの標準的な動作ではないため、リテラル文字列の区切りに必要な構文が変更されるため、ソフトウェアの多く – tacone

5

実際には、多くのフィールドをORDER BYに追加できます。以下のようなものがあると思い

SELECT * FROM table ORDER BY date DESC, importance DESC 
関連する問題