2017-06-08 1 views
1

DESC Utilisation de mysql sur ubuntuMySQL ne commande à l'aide commande en utilisant

la commande suivante ne commande pas dans l'ordre décroissant

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

Vous passez commande par une constante/string « maxCount » il serait semblable à dire 'ORDER BY 1 desc' qui n'a pas de sens à la rigueur. – JNevill

+0

@JNevill: 'ORDER BY 1 DESC' est acceptable pour la plupart des SGBD (pas sûr de MySQL). Cela signifie * ordre par la première colonne dans la liste SELECT *. Dans ce cas précis, 'ORDER BY 2 DESC' accomplirait ce que l'affiche a l'intention de faire. –

+0

@KenWhite Oh là là. Oui mon mal. C'est un mauvais exemple. "ORDER BY" somestring "desc" serait mieux. – JNevill

Répondre

2

MySQL permet littéraux chaîne entre guillemets. Donc, lorsque vous commandez par "maxCount", vous commandez en fait un littéral de chaîne, ce qui n'a pas de sens. Retirez les citations et il devrait fonctionner parfaitement:

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)