在MySQL查询中使用第二个ORDER

max*_*ax_ 5 mysql sql sql-order-by

我使用以下查询来选择指定纬度和经度的最近行.然后按距离排序结果,返回所选数据集中最近的行.

但是,我想按expiry_date字段对返回的最近行进行排序,以便对该数据集进行排序,以便我在最顶部(最近的到期日期)和最底部的最终结果.

请问你能告诉我怎么做?

提前致谢.

SELECT * , ( 6371 * ACOS( COS( RADIANS( latitude ) ) * COS( RADIANS( 51.61062 ) ) * COS( RADIANS( - 0.236952 ) - RADIANS( longitude ) ) + SIN( RADIANS( latitude ) ) * SIN( RADIANS( 51.61062 ) ) ) ) AS distance
FROM  `questions` 
WHERE  `expiry_date` > 
CURRENT_TIMESTAMP HAVING distance <=50000
ORDER BY distance
LIMIT 0 , 15
Run Code Online (Sandbox Code Playgroud)

Joh*_*nde 31

ORDER BY可以是逗号分隔的列表.只需按顺序列出它们:

SELECT * , ( 6371 * ACOS( COS( RADIANS( latitude ) ) * COS( RADIANS( 51.61062 ) ) * COS( RADIANS( - 0.236952 ) - RADIANS( longitude ) ) + SIN( RADIANS( latitude ) ) * SIN( RADIANS( 51.61062 ) ) ) ) AS distance
FROM  `questions` 
WHERE  `expiry_date` > 
CURRENT_TIMESTAMP HAVING distance <=50000
ORDER BY distance
, expiry_date DESC
LIMIT 0 , 15
Run Code Online (Sandbox Code Playgroud)

  • 无法解决 OP 的问题,但在我的情况下,这很好用。 (2认同)

Gor*_*off 1

您需要一个子查询:

select t.*
from (<your query here>) t
order by expiry_date desc
Run Code Online (Sandbox Code Playgroud)