2017-10-10 8 views
1

En mysql est-il possible de commander en utilisant une valeur de sélection calculée? Par exemple, j'ai quelque chose de similaire à ce qui suit:MySQL | Commande Par valeur de sélection calculée

SELECT members.*, ROUND(formula for finding distance) AS distance 
FROM members 
ORDER BY distance ASC 

Mais lors de l'exécution de la requête que je suis rencontré un message indiquant Column not found: 1054 Unknown column 'distance' in 'order clause'

+0

Serveur MySQL ou MS SQL? Cela devrait fonctionner dans MySQL à moins que l'orthographe de "distance" dans l'aliasing et le ORDER BY ne correspondent pas. – Uueerdo

Répondre

1

Vous ne pouvez pas utiliser la clause alias order by. Vous pouvez, cependant, il suffit d'utiliser la même expression (BTW, notez que order by sont deux mots, pas un seul):

SELECT members.*, ROUND(formula for finding distance) AS distance 
FROM  members 
ORDER BY ROUND(same formula for finding distance) ASC 
+1

MySQL permet l'utilisation des alias des champs SELECT à peu près partout sauf dans la clause WHERE (et dans les autres expressions des champs SELECT). – Uueerdo

0

essayer quelque chose comme ceci:

SELECT members.*, ROUND(formula for finding distance) AS distance 
FROM members 
ORDER BY ROUND(formula for finding distance) ASC 
0

En MySQL, bien sûr un alias peut être utilisé dans le ORDER BY. Ceci est assez typique pour les calculs de distance:

SELECT members.*, ROUND(formula for finding distance) AS distance 
FROM members 
ORDER BY distance ASC; 

La plupart des bases de données permettent cette construction.

Voici un Rextester démontrant le fonctionnement.