在MySQL查询中使用第二个ORDER

时间:2012-08-21 20:30:17

标签: 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

2 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:0)

你需要一个子查询:

select t.*
from (<your query here>) t
order by expiry_date desc