在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'
在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'
你不能別名order by
子句中使用。你可以,但是,只要使用相同的表達式(順便說一句,注意order by
是兩個詞,不是一個):
SELECT members.*, ROUND(formula for finding distance) AS distance
FROM members
ORDER BY ROUND(same formula for finding distance) ASC
除了WHERE子句(和其他SELECT字段的表達式)外,MySQL允許使用SELECT字段的別名。 – Uueerdo
嘗試這樣的事:
SELECT members.*, ROUND(formula for finding distance) AS distance
FROM members
ORDER BY ROUND(formula for finding distance) ASC
在MySQL中,當然別名可以在ORDER BY
中使用。這對於距離計算來說是相當典型的:
SELECT members.*, ROUND(formula for finding distance) AS distance
FROM members
ORDER BY distance ASC;
大多數數據庫都允許這種結構。
這是一個Rextester演示它的工作。
MySQL或MS Sql Server?這應該在MySQL中起作用,除非別名中的「distance」拼寫和ORDER BY不匹配。 – Uueerdo