2017-10-10 121 views
1

在mysql中是否可以使用計算出的選擇值進行排序?比如我有類似如下的內容:MySQL |順序通過計算選擇值

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

但在執行查詢時,我遇到了一個消息,說明Column not found: 1054 Unknown column 'distance' in 'order clause'

+0

MySQL或MS Sql Server?這應該在MySQL中起作用,除非別名中的「distance」拼寫和ORDER BY不匹配。 – Uueerdo

回答

1

你不能別名order by子句中使用。你可以,但是,只要使用相同的表達式(順便說一句,注意order by是兩個詞,不是一個):

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

除了WHERE子句(和其他SELECT字段的表達式)外,MySQL允許使用SELECT字段的別名。 – Uueerdo

0

嘗試這樣的事:

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

在MySQL中,當然別名可以在ORDER BY中使用。這對於距離計算來說是相當典型的:

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

大多數數據庫都允許這種結構。

這是一個Rextester演示它的工作。