2017-06-08 1 views
1

MySQL auf ubuntumysql Bestellung nicht Bestellung mit von DESC mit

den folgenden Befehl wird die Bestellung nicht um

mysql> select spo_id, count(spo_id) as "maxCount" from order_details GROUP BY spo_id ORDER BY "maxCount" DESC; 
+--------+----------+ 
| spo_id | maxCount | 
+--------+----------+ 
|  1 |  1 | 
|  2 |  3 | 
|  3 |  1 | 
+--------+----------+ 
3 rows in set (0.00 sec) 
+1

Sie bestellen durch eine Konstante/string „maxCount“ es wäre ähnlich zu sagen, 'ORDER BY 1 DESC', die sinnlos-ish ist. – JNevill

+0

@JNevill: 'ORDER BY 1 DESC' ist für die meisten DBMS akzeptabel (nicht sicher über MySQL). Es bedeutet * Reihenfolge nach der ersten Spalte in der SELECT-Liste *. In diesem speziellen Fall würde "ORDER BY 2 DESC" erreichen, was das Poster beabsichtigt. –

+0

@KenWhite Oh mein Gott. Ja mein Schlechter. Das ist ein schlechtes Beispiel. 'ORDER BY" somestring "desc" wäre besser. – JNevill

Antwort

2

MySQL ermöglicht Stringliterale mit doppelten Anführungszeichen in absteigender Reihenfolge. Wenn Sie also mit "maxCount" bestellen, ordnen Sie tatsächlich nach einem String-Literal, was einfach bedeutungslos ist. Entfernen Sie die Anführungszeichen, und es sollte gut funktionieren:

MariaDB [db]> select spo_id, count(spo_id) as maxCount from order_details GROUP BY spo_id ORDER BY maxCount DESC; 
+--------+----------+ 
| spo_id | maxCount | 
+--------+----------+ 
|  2 |  3 | 
|  3 |  1 | 
|  1 |  1 | 
+--------+----------+ 
3 rows in set (0.00 sec)