2016-08-10 14 views
0

私は分単位で結果テーブルを作成しています。テーブルをソートしたいのですが、ポイント(最高位)、ポイントが等しい場合はゴール差でソートしたい、ゴール差が等しい場合は、得点でソートしたい。php/mysql複数注文by

ので、テーブルはこのように見えるかもしれません、

+--------+--------+----------+-----------------+--------+ 
| Team | Scored | Conceded | Goal Difference | Points | 
+--------+--------+----------+-----------------+--------+ 
| Team A |  20 |  10 | +10    |  15 | 
| Team B |  20 |  15 | +5    |  15 | 
| Team C |  10 |  10 | 0    |  9 | 
| Team D |  5 |  5 | 0    |  9 | 
+--------+--------+----------+-----------------+--------+ 

だから、チームAは、彼らがより多くのゴ​​ールを決めるので、それがチームB、チームD上記チームCの仕上げよりも得失点差があるためリーグを獲得し、すべての他のものは等しいです。

このようにmysqlで注文することは可能ですか、それともPHPで結果を解析する必要がありますか?

+0

いいえ、PHPは必要ありません。 'SELECT * FROM tablename'よりもSQLの方が多くあります。 –

+0

[mysqlで複数の列による注文]の可能な複製(0120-18753-03) –

答えて

4

あなたがあなたのテーブル構造を与えられたが、これらのフィールドが数値でない場合jpgで指摘したように、FIELD_NAME + 0によってORDERいない

SELECT * FROM mytable ORDER BY Points DESC, `Goal Difference` DESC, Scored DESC 

、ORDER BYに複数の列名を渡すことができるもの、ゲスより適切かもしれ

+1

あなたはポイントを忘れてしまった;) – nospor

+0

@nosporを指摘していただきありがとうございます – e4c5

+0

'Goal Difference'が' char'または 'varchar'の場合、' \ 'Goal Difference \' + 0'が良いでしょう。 :-D – Blank

1

あなたは、この使用してクエリ

SELECT * from `your_table` ORDER BY points DESC, goal_difference DESC, scored DESC 
0

あなたは、同時に複数の列で注文することができるように行うことができます。

SELECT some_cols 
FROM table 
WHERE (some conditions) 
ORDER BY col1 DESC, col2, col3;