我使用以下查询来选择指定纬度和经度的最近行。然后按距离排序结果,返回所选数据集中最近的行。
但是,我想按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
答案 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